@contentful/field-editor-rich-text 3.16.8 → 3.16.11

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 (376) hide show
  1. package/dist/cjs/ContentfulEditorProvider.js +8 -8
  2. package/dist/cjs/RichTextEditor.js +20 -22
  3. package/dist/cjs/RichTextEditor.styles.js +1 -2
  4. package/dist/cjs/SdkProvider.js +5 -7
  5. package/dist/cjs/SyncEditorChanges.js +6 -15
  6. package/dist/cjs/Toolbar/_tests_/toolbar.test.js +15 -17
  7. package/dist/cjs/Toolbar/components/EmbedEntityWidget.js +9 -13
  8. package/dist/cjs/Toolbar/components/EmbeddedEntityDropdownButton.js +8 -10
  9. package/dist/cjs/Toolbar/components/StickyToolbarWrapper.js +2 -2
  10. package/dist/cjs/Toolbar/index.js +30 -33
  11. package/dist/cjs/__fixtures__/FakeSdk.js +3 -3
  12. package/dist/cjs/__fixtures__/asset/index.js +10 -10
  13. package/dist/cjs/__fixtures__/content-type/index.js +1 -1
  14. package/dist/cjs/__fixtures__/entry/index.js +7 -7
  15. package/dist/cjs/__fixtures__/fixtures.js +6 -8
  16. package/dist/cjs/__fixtures__/locale/index.js +2 -2
  17. package/dist/cjs/__fixtures__/space/index.js +1 -1
  18. package/dist/cjs/constants/Schema.js +0 -1
  19. package/dist/cjs/dialogs/HypelinkDialog/HyperlinkDialog.js +38 -43
  20. package/dist/cjs/dialogs/openRichTextDialog.js +4 -6
  21. package/dist/cjs/dialogs/renderRichTextDialog.js +4 -6
  22. package/dist/cjs/helpers/__tests__/removeInternalMarks.test.js +10 -10
  23. package/dist/cjs/helpers/callbacks.js +3 -3
  24. package/dist/cjs/helpers/config.js +2 -2
  25. package/dist/cjs/helpers/editor.js +44 -53
  26. package/dist/cjs/helpers/environment.js +3 -3
  27. package/dist/cjs/helpers/formatDateAndTime.js +4 -5
  28. package/dist/cjs/helpers/getAllowedResourcesForNodeType.js +5 -22
  29. package/dist/cjs/helpers/getLinkedContentTypeIdsForNodeType.js +5 -29
  30. package/dist/cjs/helpers/nodeFactory.js +6 -6
  31. package/dist/cjs/helpers/sdkNavigatorSlideIn.js +6 -14
  32. package/dist/cjs/helpers/sdkNavigatorSlideIn.spec.js +2 -3
  33. package/dist/cjs/helpers/toSlateValue.js +3 -14
  34. package/dist/cjs/helpers/transformers.js +5 -5
  35. package/dist/cjs/helpers/validations.js +9 -12
  36. package/dist/cjs/index.js +5 -7
  37. package/dist/cjs/internal/constants.js +2 -4
  38. package/dist/cjs/internal/hooks.js +7 -9
  39. package/dist/cjs/internal/misc.js +12 -15
  40. package/dist/cjs/internal/queries.js +108 -115
  41. package/dist/cjs/internal/transforms.js +48 -51
  42. package/dist/cjs/internal/types/editor.js +1 -3
  43. package/dist/cjs/plugins/Break/createExitBreakPlugin.test.js +3 -4
  44. package/dist/cjs/plugins/Break/createResetNodePlugin.js +0 -1
  45. package/dist/cjs/plugins/Break/createSoftBreakPlugin.test.js +3 -3
  46. package/dist/cjs/plugins/CommandPalette/components/CommandList.js +33 -35
  47. package/dist/cjs/plugins/CommandPalette/components/CommandList.styles.js +1 -1
  48. package/dist/cjs/plugins/CommandPalette/components/CommandPrompt.js +5 -7
  49. package/dist/cjs/plugins/CommandPalette/hooks/useCommandList.js +3 -7
  50. package/dist/cjs/plugins/CommandPalette/onKeyDown.js +1 -6
  51. package/dist/cjs/plugins/CommandPalette/onKeyDown.spec.js +4 -6
  52. package/dist/cjs/plugins/CommandPalette/useCommands.js +3 -3
  53. package/dist/cjs/plugins/CommandPalette/utils/fetchEntries.js +0 -2
  54. package/dist/cjs/plugins/CommandPalette/utils/trimLeadingSlash.js +1 -6
  55. package/dist/cjs/plugins/DragAndDrop/index.js +1 -9
  56. package/dist/cjs/plugins/EmbeddedEntityBlock/LinkedEntityBlock.js +8 -10
  57. package/dist/cjs/plugins/EmbeddedEntityBlock/index.js +3 -3
  58. package/dist/cjs/plugins/EmbeddedEntityInline/FetchingWrappedInlineEntryCard.js +17 -19
  59. package/dist/cjs/plugins/EmbeddedEntityInline/LinkedEntityInline.js +7 -9
  60. package/dist/cjs/plugins/EmbeddedResourceBlock/LinkedResourceBlock.js +5 -5
  61. package/dist/cjs/plugins/EmbeddedResourceInline/FetchingWrappedResourceInlineCard.js +11 -13
  62. package/dist/cjs/plugins/EmbeddedResourceInline/LinkedResourceInline.js +5 -5
  63. package/dist/cjs/plugins/Heading/__tests__/createHeadingPlugin.test.js +32 -32
  64. package/dist/cjs/plugins/Heading/components/Heading.js +10 -13
  65. package/dist/cjs/plugins/Heading/components/ToolbarHeadingButton.js +29 -23
  66. package/dist/cjs/plugins/Heading/createHeadingPlugin.js +2 -7
  67. package/dist/cjs/plugins/Hr/index.js +14 -19
  68. package/dist/cjs/plugins/Hyperlink/HyperlinkModal.js +28 -32
  69. package/dist/cjs/plugins/Hyperlink/__tests__/createHyperlinkPlugin.test.js +8 -8
  70. package/dist/cjs/plugins/Hyperlink/components/EntityHyperlink.js +8 -10
  71. package/dist/cjs/plugins/Hyperlink/components/LinkPopover.js +17 -23
  72. package/dist/cjs/plugins/Hyperlink/components/ResourceHyperlink.js +8 -10
  73. package/dist/cjs/plugins/Hyperlink/components/ToolbarHyperlinkButton.js +4 -6
  74. package/dist/cjs/plugins/Hyperlink/components/UrlHyperlink.js +6 -8
  75. package/dist/cjs/plugins/Hyperlink/components/linkHandlers.js +3 -3
  76. package/dist/cjs/plugins/Hyperlink/components/styles.js +1 -1
  77. package/dist/cjs/plugins/Hyperlink/createHyperlinkPlugin.js +4 -10
  78. package/dist/cjs/plugins/Hyperlink/useEntityInfo.js +3 -6
  79. package/dist/cjs/plugins/Hyperlink/useResourceEntityInfo.js +4 -6
  80. package/dist/cjs/plugins/Hyperlink/utils.js +4 -4
  81. package/dist/cjs/plugins/List/__tests__/createListPlugin.test.js +13 -13
  82. package/dist/cjs/plugins/List/__tests__/insertListBreak.test.js +25 -29
  83. package/dist/cjs/plugins/List/__tests__/insertListFragment.test.js +22 -22
  84. package/dist/cjs/plugins/List/components/List.js +7 -9
  85. package/dist/cjs/plugins/List/components/ListItem.js +4 -6
  86. package/dist/cjs/plugins/List/components/ToolbarListButton.js +5 -7
  87. package/dist/cjs/plugins/List/createListPlugin.js +0 -4
  88. package/dist/cjs/plugins/List/insertListBreak.js +4 -13
  89. package/dist/cjs/plugins/List/insertListFragment.js +5 -18
  90. package/dist/cjs/plugins/List/onKeyDownList.js +6 -8
  91. package/dist/cjs/plugins/List/transforms/insertListItem.js +2 -17
  92. package/dist/cjs/plugins/List/transforms/moveListItemDown.js +2 -8
  93. package/dist/cjs/plugins/List/transforms/moveListItems.js +2 -7
  94. package/dist/cjs/plugins/List/transforms/moveListItems.test.js +14 -15
  95. package/dist/cjs/plugins/List/transforms/toggleList.js +3 -8
  96. package/dist/cjs/plugins/List/transforms/toggleList.spec.js +28 -28
  97. package/dist/cjs/plugins/List/transforms/unwrapList.js +2 -7
  98. package/dist/cjs/plugins/List/utils.js +11 -12
  99. package/dist/cjs/plugins/List/withList.js +2 -6
  100. package/dist/cjs/plugins/Marks/Bold.js +7 -9
  101. package/dist/cjs/plugins/Marks/Code.js +7 -15
  102. package/dist/cjs/plugins/Marks/Italic.js +7 -9
  103. package/dist/cjs/plugins/Marks/Subscript.js +8 -10
  104. package/dist/cjs/plugins/Marks/Superscript.js +8 -10
  105. package/dist/cjs/plugins/Marks/Underline.js +4 -6
  106. package/dist/cjs/plugins/Marks/components/MarkToolbarButton.js +7 -9
  107. package/dist/cjs/plugins/Marks/helpers.js +5 -5
  108. package/dist/cjs/plugins/Normalizer/baseRules.js +0 -2
  109. package/dist/cjs/plugins/Normalizer/createNormalizerPlugin.test.js +12 -12
  110. package/dist/cjs/plugins/Normalizer/utils.js +3 -4
  111. package/dist/cjs/plugins/Normalizer/withNormalizer.js +3 -23
  112. package/dist/cjs/plugins/Paragraph/Paragraph.js +4 -6
  113. package/dist/cjs/plugins/Paragraph/__tests__/createParagraphPlugin.test.js +32 -32
  114. package/dist/cjs/plugins/Paragraph/createParagraphPlugin.js +2 -3
  115. package/dist/cjs/plugins/PasteHTML/createPasteHTMLPlugin.js +6 -9
  116. package/dist/cjs/plugins/PasteHTML/utils/__tests__/sanitizeHTML.test.js +0 -2
  117. package/dist/cjs/plugins/PasteHTML/utils/sanitizeAnchors.js +0 -9
  118. package/dist/cjs/plugins/PasteHTML/utils/sanitizeHTML.js +2 -17
  119. package/dist/cjs/plugins/PasteHTML/utils/sanitizeSheets.js +1 -13
  120. package/dist/cjs/plugins/Quote/__test__/createQuotePlugin.test.js +21 -21
  121. package/dist/cjs/plugins/Quote/components/Quote.js +4 -6
  122. package/dist/cjs/plugins/Quote/components/ToolbarQuoteButton.js +4 -6
  123. package/dist/cjs/plugins/Quote/createQuotePlugin.js +0 -1
  124. package/dist/cjs/plugins/Quote/toggleQuote.js +5 -5
  125. package/dist/cjs/plugins/Quote/withQuote.js +2 -4
  126. package/dist/cjs/plugins/SelectOnBackspace/createSelectOnBackspacePlugin.js +0 -1
  127. package/dist/cjs/plugins/Table/__tests__/createTablePlugin.test.js +22 -22
  128. package/dist/cjs/plugins/Table/__tests__/helpers.test.js +4 -4
  129. package/dist/cjs/plugins/Table/actions/addColumn.js +4 -5
  130. package/dist/cjs/plugins/Table/actions/addRow.js +3 -6
  131. package/dist/cjs/plugins/Table/components/Cell.js +5 -7
  132. package/dist/cjs/plugins/Table/components/HeaderCell.js +5 -7
  133. package/dist/cjs/plugins/Table/components/Row.js +4 -6
  134. package/dist/cjs/plugins/Table/components/Table.js +6 -8
  135. package/dist/cjs/plugins/Table/components/TableActions.js +16 -19
  136. package/dist/cjs/plugins/Table/components/ToolbarButton.js +4 -7
  137. package/dist/cjs/plugins/Table/createTablePlugin.js +1 -11
  138. package/dist/cjs/plugins/Table/helpers.js +12 -16
  139. package/dist/cjs/plugins/Table/insertTableFragment.js +2 -15
  140. package/dist/cjs/plugins/Table/onKeyDownTable.js +2 -11
  141. package/dist/cjs/plugins/Table/tableTracking.js +6 -6
  142. package/dist/cjs/plugins/Text/__tests__/createTextPlugin.test.js +17 -19
  143. package/dist/cjs/plugins/Text/createTextPlugin.js +5 -22
  144. package/dist/cjs/plugins/Tracking/createTrackingPlugin.js +4 -5
  145. package/dist/cjs/plugins/Tracking/utils.js +3 -6
  146. package/dist/cjs/plugins/Voids/createVoidsPlugin.js +0 -5
  147. package/dist/cjs/plugins/Voids/transformVoid.js +0 -1
  148. package/dist/cjs/plugins/index.js +3 -15
  149. package/dist/cjs/plugins/shared/EmbeddedBlockToolbarIcon.js +10 -12
  150. package/dist/cjs/plugins/shared/EmbeddedBlockUtil.js +6 -16
  151. package/dist/cjs/plugins/shared/EmbeddedInlineToolbarIcon.js +8 -10
  152. package/dist/cjs/plugins/shared/EmbeddedInlineUtil.js +5 -9
  153. package/dist/cjs/plugins/shared/FetchingWrappedAssetCard.js +11 -13
  154. package/dist/cjs/plugins/shared/FetchingWrappedEntryCard.js +12 -14
  155. package/dist/cjs/plugins/shared/FetchingWrappedResourceCard.js +11 -14
  156. package/dist/cjs/plugins/shared/LinkedBlockWrapper.js +4 -8
  157. package/dist/cjs/plugins/shared/LinkedInlineWrapper.js +6 -10
  158. package/dist/cjs/plugins/shared/ResourceNewBadge.js +3 -5
  159. package/dist/cjs/plugins/shared/ToolbarButton.js +6 -8
  160. package/dist/cjs/plugins/shared/__tests__/FetchingWrappedAssetCard.test.js +5 -10
  161. package/dist/cjs/plugins/shared/__tests__/FetchingWrappedEntryCard.test.js +6 -11
  162. package/dist/cjs/plugins/shared/__tests__/FetchingWrappedResourceCard.test.js +13 -15
  163. package/dist/cjs/plugins/shared/utils.js +1 -4
  164. package/dist/cjs/test-utils/assertOutput.js +0 -1
  165. package/dist/cjs/test-utils/hyperscript.d.js +0 -1
  166. package/dist/cjs/test-utils/randomId.js +1 -3
  167. package/dist/cjs/test-utils/validation.js +5 -8
  168. package/dist/esm/ContentfulEditorProvider.js +1 -4
  169. package/dist/esm/RichTextEditor.js +13 -13
  170. package/dist/esm/RichTextEditor.styles.js +0 -1
  171. package/dist/esm/SdkProvider.js +2 -2
  172. package/dist/esm/SyncEditorChanges.js +3 -18
  173. package/dist/esm/Toolbar/_tests_/toolbar.test.js +12 -12
  174. package/dist/esm/Toolbar/components/EmbedEntityWidget.js +7 -9
  175. package/dist/esm/Toolbar/components/EmbeddedEntityDropdownButton.js +6 -6
  176. package/dist/esm/Toolbar/components/StickyToolbarWrapper.js +1 -1
  177. package/dist/esm/Toolbar/index.js +27 -28
  178. package/dist/esm/__fixtures__/FakeSdk.js +3 -3
  179. package/dist/esm/constants/Schema.js +0 -1
  180. package/dist/esm/dialogs/HypelinkDialog/HyperlinkDialog.js +31 -34
  181. package/dist/esm/dialogs/openRichTextDialog.js +2 -2
  182. package/dist/esm/dialogs/renderRichTextDialog.js +2 -2
  183. package/dist/esm/helpers/__tests__/removeInternalMarks.test.js +10 -10
  184. package/dist/esm/helpers/callbacks.js +1 -1
  185. package/dist/esm/helpers/config.js +1 -9
  186. package/dist/esm/helpers/editor.js +6 -22
  187. package/dist/esm/helpers/extractNodes.js +1 -3
  188. package/dist/esm/helpers/formatDateAndTime.js +2 -11
  189. package/dist/esm/helpers/getAllowedResourcesForNodeType.js +2 -19
  190. package/dist/esm/helpers/getLinkedContentTypeIdsForNodeType.js +2 -26
  191. package/dist/esm/helpers/sdkNavigatorSlideIn.js +6 -20
  192. package/dist/esm/helpers/sdkNavigatorSlideIn.spec.js +0 -1
  193. package/dist/esm/helpers/toSlateValue.js +3 -17
  194. package/dist/esm/helpers/validations.js +1 -5
  195. package/dist/esm/internal/misc.js +2 -23
  196. package/dist/esm/internal/queries.js +2 -11
  197. package/dist/esm/internal/transforms.js +3 -14
  198. package/dist/esm/internal/types/editor.js +1 -3
  199. package/dist/esm/plugins/Break/createExitBreakPlugin.test.js +3 -4
  200. package/dist/esm/plugins/Break/createResetNodePlugin.js +0 -1
  201. package/dist/esm/plugins/Break/createSoftBreakPlugin.test.js +3 -3
  202. package/dist/esm/plugins/CommandPalette/components/CommandList.js +30 -30
  203. package/dist/esm/plugins/CommandPalette/components/CommandPrompt.js +2 -2
  204. package/dist/esm/plugins/CommandPalette/createCommandPalettePlugin.js +1 -11
  205. package/dist/esm/plugins/CommandPalette/hooks/useCommandList.js +0 -2
  206. package/dist/esm/plugins/CommandPalette/onKeyDown.js +0 -5
  207. package/dist/esm/plugins/CommandPalette/onKeyDown.spec.js +2 -2
  208. package/dist/esm/plugins/CommandPalette/useCommands.js +3 -3
  209. package/dist/esm/plugins/CommandPalette/utils/fetchEntries.js +0 -2
  210. package/dist/esm/plugins/CommandPalette/utils/trimLeadingSlash.js +1 -6
  211. package/dist/esm/plugins/DragAndDrop/index.js +1 -9
  212. package/dist/esm/plugins/EmbeddedEntityBlock/LinkedEntityBlock.js +6 -6
  213. package/dist/esm/plugins/EmbeddedEntityInline/FetchingWrappedInlineEntryCard.js +14 -14
  214. package/dist/esm/plugins/EmbeddedEntityInline/LinkedEntityInline.js +5 -5
  215. package/dist/esm/plugins/EmbeddedResourceBlock/LinkedResourceBlock.js +4 -4
  216. package/dist/esm/plugins/EmbeddedResourceInline/FetchingWrappedResourceInlineCard.js +9 -9
  217. package/dist/esm/plugins/EmbeddedResourceInline/LinkedResourceInline.js +4 -4
  218. package/dist/esm/plugins/Heading/__tests__/createHeadingPlugin.test.js +32 -32
  219. package/dist/esm/plugins/Heading/components/Heading.js +7 -8
  220. package/dist/esm/plugins/Heading/components/ToolbarHeadingButton.js +26 -18
  221. package/dist/esm/plugins/Heading/createHeadingPlugin.js +1 -6
  222. package/dist/esm/plugins/Hr/index.js +5 -8
  223. package/dist/esm/plugins/Hyperlink/HyperlinkModal.js +23 -25
  224. package/dist/esm/plugins/Hyperlink/__tests__/createHyperlinkPlugin.test.js +8 -8
  225. package/dist/esm/plugins/Hyperlink/components/EntityHyperlink.js +6 -6
  226. package/dist/esm/plugins/Hyperlink/components/LinkPopover.js +15 -19
  227. package/dist/esm/plugins/Hyperlink/components/ResourceHyperlink.js +6 -6
  228. package/dist/esm/plugins/Hyperlink/components/ToolbarHyperlinkButton.js +2 -2
  229. package/dist/esm/plugins/Hyperlink/components/UrlHyperlink.js +4 -4
  230. package/dist/esm/plugins/Hyperlink/createHyperlinkPlugin.js +1 -5
  231. package/dist/esm/plugins/Hyperlink/useEntityInfo.js +3 -6
  232. package/dist/esm/plugins/Hyperlink/useResourceEntityInfo.js +2 -2
  233. package/dist/esm/plugins/Hyperlink/utils.js +1 -1
  234. package/dist/esm/plugins/List/__tests__/createListPlugin.test.js +13 -13
  235. package/dist/esm/plugins/List/__tests__/insertListBreak.test.js +25 -29
  236. package/dist/esm/plugins/List/__tests__/insertListFragment.test.js +22 -22
  237. package/dist/esm/plugins/List/components/List.js +1 -1
  238. package/dist/esm/plugins/List/components/ListItem.js +1 -1
  239. package/dist/esm/plugins/List/components/ToolbarListButton.js +3 -3
  240. package/dist/esm/plugins/List/createListPlugin.js +0 -4
  241. package/dist/esm/plugins/List/insertListBreak.js +4 -13
  242. package/dist/esm/plugins/List/insertListFragment.js +5 -18
  243. package/dist/esm/plugins/List/onKeyDownList.js +5 -7
  244. package/dist/esm/plugins/List/transforms/insertListItem.js +3 -20
  245. package/dist/esm/plugins/List/transforms/moveListItemDown.js +2 -8
  246. package/dist/esm/plugins/List/transforms/moveListItems.js +2 -7
  247. package/dist/esm/plugins/List/transforms/moveListItems.test.js +14 -15
  248. package/dist/esm/plugins/List/transforms/toggleList.js +3 -8
  249. package/dist/esm/plugins/List/transforms/toggleList.spec.js +28 -28
  250. package/dist/esm/plugins/List/transforms/unwrapList.js +2 -7
  251. package/dist/esm/plugins/List/utils.js +2 -7
  252. package/dist/esm/plugins/List/withList.js +2 -6
  253. package/dist/esm/plugins/Marks/Bold.js +2 -2
  254. package/dist/esm/plugins/Marks/Code.js +2 -8
  255. package/dist/esm/plugins/Marks/Italic.js +2 -2
  256. package/dist/esm/plugins/Marks/Subscript.js +2 -2
  257. package/dist/esm/plugins/Marks/Superscript.js +2 -2
  258. package/dist/esm/plugins/Marks/Underline.js +2 -2
  259. package/dist/esm/plugins/Marks/components/MarkToolbarButton.js +4 -4
  260. package/dist/esm/plugins/Marks/helpers.js +1 -1
  261. package/dist/esm/plugins/Normalizer/baseRules.js +0 -4
  262. package/dist/esm/plugins/Normalizer/createNormalizerPlugin.test.js +12 -12
  263. package/dist/esm/plugins/Normalizer/utils.js +0 -1
  264. package/dist/esm/plugins/Normalizer/withNormalizer.js +2 -22
  265. package/dist/esm/plugins/Paragraph/Paragraph.js +1 -1
  266. package/dist/esm/plugins/Paragraph/__tests__/createParagraphPlugin.test.js +32 -32
  267. package/dist/esm/plugins/Paragraph/createParagraphPlugin.js +1 -2
  268. package/dist/esm/plugins/PasteHTML/createPasteHTMLPlugin.js +3 -9
  269. package/dist/esm/plugins/PasteHTML/utils/__tests__/sanitizeHTML.test.js +0 -2
  270. package/dist/esm/plugins/PasteHTML/utils/sanitizeAnchors.js +1 -27
  271. package/dist/esm/plugins/PasteHTML/utils/sanitizeHTML.js +2 -17
  272. package/dist/esm/plugins/PasteHTML/utils/sanitizeSheets.js +1 -13
  273. package/dist/esm/plugins/Quote/__test__/createQuotePlugin.test.js +21 -21
  274. package/dist/esm/plugins/Quote/components/Quote.js +1 -1
  275. package/dist/esm/plugins/Quote/components/ToolbarQuoteButton.js +2 -2
  276. package/dist/esm/plugins/Quote/createQuotePlugin.js +0 -1
  277. package/dist/esm/plugins/Quote/shouldResetQuote.js +1 -6
  278. package/dist/esm/plugins/Quote/toggleQuote.js +1 -1
  279. package/dist/esm/plugins/Quote/withQuote.js +2 -4
  280. package/dist/esm/plugins/SelectOnBackspace/createSelectOnBackspacePlugin.js +0 -1
  281. package/dist/esm/plugins/Table/__tests__/createTablePlugin.test.js +22 -22
  282. package/dist/esm/plugins/Table/__tests__/helpers.test.js +4 -4
  283. package/dist/esm/plugins/Table/actions/addColumn.js +1 -2
  284. package/dist/esm/plugins/Table/actions/addRow.js +0 -3
  285. package/dist/esm/plugins/Table/components/Cell.js +2 -2
  286. package/dist/esm/plugins/Table/components/HeaderCell.js +2 -2
  287. package/dist/esm/plugins/Table/components/Row.js +1 -1
  288. package/dist/esm/plugins/Table/components/Table.js +3 -3
  289. package/dist/esm/plugins/Table/components/TableActions.js +11 -12
  290. package/dist/esm/plugins/Table/components/ToolbarButton.js +2 -3
  291. package/dist/esm/plugins/Table/createTablePlugin.js +1 -11
  292. package/dist/esm/plugins/Table/helpers.js +1 -10
  293. package/dist/esm/plugins/Table/insertTableFragment.js +2 -15
  294. package/dist/esm/plugins/Table/onKeyDownTable.js +2 -11
  295. package/dist/esm/plugins/Table/tableTracking.js +6 -6
  296. package/dist/esm/plugins/Text/__tests__/createTextPlugin.test.js +17 -19
  297. package/dist/esm/plugins/Text/createTextPlugin.js +5 -22
  298. package/dist/esm/plugins/Tracking/createTrackingPlugin.js +1 -2
  299. package/dist/esm/plugins/Tracking/utils.js +0 -1
  300. package/dist/esm/plugins/Voids/createVoidsPlugin.js +0 -5
  301. package/dist/esm/plugins/Voids/transformVoid.js +1 -4
  302. package/dist/esm/plugins/index.js +0 -12
  303. package/dist/esm/plugins/shared/EmbeddedBlockToolbarIcon.js +5 -5
  304. package/dist/esm/plugins/shared/EmbeddedBlockUtil.js +5 -15
  305. package/dist/esm/plugins/shared/EmbeddedInlineToolbarIcon.js +5 -5
  306. package/dist/esm/plugins/shared/EmbeddedInlineUtil.js +4 -8
  307. package/dist/esm/plugins/shared/FetchingWrappedAssetCard.js +8 -8
  308. package/dist/esm/plugins/shared/FetchingWrappedEntryCard.js +9 -9
  309. package/dist/esm/plugins/shared/FetchingWrappedResourceCard.js +8 -9
  310. package/dist/esm/plugins/shared/LinkedBlockWrapper.js +3 -7
  311. package/dist/esm/plugins/shared/LinkedInlineWrapper.js +3 -5
  312. package/dist/esm/plugins/shared/ResourceNewBadge.js +1 -1
  313. package/dist/esm/plugins/shared/ToolbarButton.js +3 -3
  314. package/dist/esm/plugins/shared/__tests__/FetchingWrappedAssetCard.test.js +2 -5
  315. package/dist/esm/plugins/shared/__tests__/FetchingWrappedEntryCard.test.js +2 -5
  316. package/dist/esm/plugins/shared/__tests__/FetchingWrappedResourceCard.test.js +8 -8
  317. package/dist/esm/plugins/shared/utils.js +1 -4
  318. package/dist/esm/test-utils/assertOutput.js +0 -1
  319. package/dist/esm/test-utils/hyperscript.d.js +0 -1
  320. package/dist/esm/test-utils/jsx.js +1 -5
  321. package/dist/esm/test-utils/randomId.js +1 -3
  322. package/dist/esm/test-utils/setEmptyDataAttribute.js +1 -4
  323. package/dist/esm/test-utils/validation.js +4 -7
  324. package/dist/types/RichTextEditor.d.ts +2 -3
  325. package/dist/types/Toolbar/components/EmbedEntityWidget.d.ts +1 -2
  326. package/dist/types/Toolbar/components/EmbeddedEntityDropdownButton.d.ts +1 -1
  327. package/dist/types/Toolbar/components/StickyToolbarWrapper.d.ts +2 -2
  328. package/dist/types/Toolbar/index.d.ts +1 -2
  329. package/dist/types/dialogs/HypelinkDialog/HyperlinkDialog.d.ts +4 -4
  330. package/dist/types/dialogs/renderRichTextDialog.d.ts +1 -2
  331. package/dist/types/plugins/CommandPalette/components/CommandList.d.ts +1 -2
  332. package/dist/types/plugins/CommandPalette/components/CommandPrompt.d.ts +1 -2
  333. package/dist/types/plugins/EmbeddedEntityBlock/LinkedEntityBlock.d.ts +1 -2
  334. package/dist/types/plugins/EmbeddedEntityInline/FetchingWrappedInlineEntryCard.d.ts +1 -1
  335. package/dist/types/plugins/EmbeddedEntityInline/LinkedEntityInline.d.ts +1 -2
  336. package/dist/types/plugins/EmbeddedResourceBlock/LinkedResourceBlock.d.ts +1 -2
  337. package/dist/types/plugins/EmbeddedResourceInline/FetchingWrappedResourceInlineCard.d.ts +1 -1
  338. package/dist/types/plugins/EmbeddedResourceInline/LinkedResourceInline.d.ts +1 -2
  339. package/dist/types/plugins/Heading/components/Heading.d.ts +6 -6
  340. package/dist/types/plugins/Heading/components/ToolbarHeadingButton.d.ts +1 -2
  341. package/dist/types/plugins/Hr/index.d.ts +2 -2
  342. package/dist/types/plugins/Hyperlink/HyperlinkModal.d.ts +1 -2
  343. package/dist/types/plugins/Hyperlink/components/EntityHyperlink.d.ts +1 -2
  344. package/dist/types/plugins/Hyperlink/components/LinkPopover.d.ts +1 -1
  345. package/dist/types/plugins/Hyperlink/components/ResourceHyperlink.d.ts +1 -2
  346. package/dist/types/plugins/Hyperlink/components/ToolbarHyperlinkButton.d.ts +1 -2
  347. package/dist/types/plugins/Hyperlink/components/UrlHyperlink.d.ts +1 -2
  348. package/dist/types/plugins/List/components/List.d.ts +2 -3
  349. package/dist/types/plugins/List/components/ListItem.d.ts +1 -2
  350. package/dist/types/plugins/List/components/ToolbarListButton.d.ts +1 -2
  351. package/dist/types/plugins/Marks/Bold.d.ts +2 -3
  352. package/dist/types/plugins/Marks/Code.d.ts +3 -4
  353. package/dist/types/plugins/Marks/Italic.d.ts +2 -3
  354. package/dist/types/plugins/Marks/Subscript.d.ts +3 -4
  355. package/dist/types/plugins/Marks/Superscript.d.ts +3 -4
  356. package/dist/types/plugins/Marks/Underline.d.ts +2 -3
  357. package/dist/types/plugins/Marks/components/MarkToolbarButton.d.ts +1 -1
  358. package/dist/types/plugins/Paragraph/Paragraph.d.ts +1 -2
  359. package/dist/types/plugins/Quote/components/Quote.d.ts +1 -2
  360. package/dist/types/plugins/Quote/components/ToolbarQuoteButton.d.ts +1 -2
  361. package/dist/types/plugins/Table/components/Cell.d.ts +1 -2
  362. package/dist/types/plugins/Table/components/HeaderCell.d.ts +1 -2
  363. package/dist/types/plugins/Table/components/Row.d.ts +1 -2
  364. package/dist/types/plugins/Table/components/Table.d.ts +1 -2
  365. package/dist/types/plugins/Table/components/TableActions.d.ts +1 -2
  366. package/dist/types/plugins/Table/components/ToolbarButton.d.ts +1 -2
  367. package/dist/types/plugins/shared/EmbeddedBlockToolbarIcon.d.ts +1 -2
  368. package/dist/types/plugins/shared/EmbeddedInlineToolbarIcon.d.ts +1 -2
  369. package/dist/types/plugins/shared/FetchingWrappedAssetCard.d.ts +1 -2
  370. package/dist/types/plugins/shared/FetchingWrappedEntryCard.d.ts +1 -2
  371. package/dist/types/plugins/shared/FetchingWrappedResourceCard.d.ts +1 -2
  372. package/dist/types/plugins/shared/LinkedBlockWrapper.d.ts +1 -1
  373. package/dist/types/plugins/shared/LinkedInlineWrapper.d.ts +1 -1
  374. package/dist/types/plugins/shared/ResourceNewBadge.d.ts +1 -2
  375. package/dist/types/plugins/shared/ToolbarButton.d.ts +1 -2
  376. package/package.json +8 -5
@@ -16,11 +16,7 @@ const getNearestListAncestor = (editor, path)=>{
16
16
  match: isList
17
17
  }) || [];
18
18
  };
19
- /**
20
- * Places orphaned list items in a list. If there's a list somewhere
21
- * in the node's ancestors, defaults to that list type, else places
22
- * the list item in an unordered list.
23
- */ export const normalizeOrphanedListItem = (editor, [, path])=>{
19
+ export const normalizeOrphanedListItem = (editor, [, path])=>{
24
20
  const [parentList] = getNearestListAncestor(editor, path);
25
21
  const parentListType = parentList?.type;
26
22
  wrapNodes(editor, {
@@ -69,7 +65,7 @@ export const replaceNodeWithListItems = (editor, entry)=>{
69
65
  });
70
66
  };
71
67
  export const isListTypeActive = (editor, type)=>{
72
- const { selection } = editor;
68
+ const { selection } = editor;
73
69
  if (!selection) {
74
70
  return false;
75
71
  }
@@ -80,7 +76,6 @@ export const isListTypeActive = (editor, type)=>{
80
76
  return true;
81
77
  }
82
78
  }
83
- // Lists can be nested. Here, we take the list type at the lowest level
84
79
  const listNode = getBlockAbove(editor, {
85
80
  match: {
86
81
  type: [
@@ -1,13 +1,10 @@
1
- /**
2
- * Credit: Modified version of Plate's list plugin
3
- * See: https://github.com/udecode/plate/blob/main/packages/nodes/list
4
- */ import { LIST_ITEM_BLOCKS } from '@contentful/rich-text-types';
1
+ import { LIST_ITEM_BLOCKS } from '@contentful/rich-text-types';
5
2
  import { normalizeList, deleteFragmentList, deleteForwardList } from '@udecode/plate-list';
6
3
  import { insertListBreak } from './insertListBreak';
7
4
  import { insertListFragment } from './insertListFragment';
8
5
  const validLiChildrenTypes = LIST_ITEM_BLOCKS;
9
6
  export const withList = (editor)=>{
10
- const { deleteForward, deleteFragment } = editor;
7
+ const { deleteForward , deleteFragment } = editor;
11
8
  editor.deleteForward = (unit)=>{
12
9
  if (deleteForwardList(editor)) return;
13
10
  deleteForward(unit);
@@ -18,7 +15,6 @@ export const withList = (editor)=>{
18
15
  };
19
16
  editor.insertBreak = insertListBreak(editor);
20
17
  editor.insertFragment = insertListFragment(editor);
21
- // TODO: replace with our own Normalizer rules
22
18
  editor.normalizeNode = normalizeList(editor, {
23
19
  validLiChildrenTypes
24
20
  });
@@ -9,7 +9,7 @@ import { buildMarkEventHandler } from './helpers';
9
9
  export const ToolbarBoldButton = createMarkToolbarButton({
10
10
  title: 'Bold',
11
11
  mark: MARKS.BOLD,
12
- icon: /*#__PURE__*/ React.createElement(FormatBoldIcon, null)
12
+ icon: React.createElement(FormatBoldIcon, null)
13
13
  });
14
14
  const styles = {
15
15
  bold: css({
@@ -17,7 +17,7 @@ const styles = {
17
17
  })
18
18
  };
19
19
  export function Bold(props) {
20
- return /*#__PURE__*/ React.createElement("strong", {
20
+ return React.createElement("strong", {
21
21
  ...props.attributes,
22
22
  className: styles.bold
23
23
  }, props.children);
@@ -8,7 +8,7 @@ import { buildMarkEventHandler } from './helpers';
8
8
  export const ToolbarCodeButton = createMarkToolbarButton({
9
9
  title: 'Code',
10
10
  mark: MARKS.CODE,
11
- icon: /*#__PURE__*/ React.createElement(CodeIcon, null)
11
+ icon: React.createElement(CodeIcon, null)
12
12
  });
13
13
  export const ToolbarDropdownCodeButton = createMarkToolbarButton({
14
14
  title: 'Code',
@@ -21,7 +21,7 @@ const styles = {
21
21
  })
22
22
  };
23
23
  export function Code(props) {
24
- return /*#__PURE__*/ React.createElement("code", {
24
+ return React.createElement("code", {
25
25
  ...props.attributes,
26
26
  className: styles.code
27
27
  }, props.children);
@@ -30,12 +30,6 @@ export const createCodePlugin = ()=>createDefaultCodePlugin({
30
30
  type: MARKS.CODE,
31
31
  component: Code,
32
32
  options: {
33
- // We need to define multiple hotkeys here,
34
- // - mod+/ -> QWERTY keyboard layout
35
- // - mod+shift+7 -> QWERTZ keyboard layout
36
- // The workaround like in packages/rich-text/src/plugins/CommandPalette/onKeyDown.ts is sadly not working here,
37
- // as `shift+7` is not interpreted as `/` with the `mod` key by the OS.
38
- // TODO: there are a lot more different keyboard layouts out there
39
33
  hotkey: [
40
34
  'mod+/',
41
35
  'mod+shift+7'
@@ -9,7 +9,7 @@ import { buildMarkEventHandler } from './helpers';
9
9
  export const ToolbarItalicButton = createMarkToolbarButton({
10
10
  title: 'Italic',
11
11
  mark: MARKS.ITALIC,
12
- icon: /*#__PURE__*/ React.createElement(FormatItalicIcon, null)
12
+ icon: React.createElement(FormatItalicIcon, null)
13
13
  });
14
14
  const styles = {
15
15
  italic: css({
@@ -17,7 +17,7 @@ const styles = {
17
17
  })
18
18
  };
19
19
  export function Italic(props) {
20
- return /*#__PURE__*/ React.createElement("em", {
20
+ return React.createElement("em", {
21
21
  ...props.attributes,
22
22
  className: styles.italic
23
23
  }, props.children);
@@ -14,7 +14,7 @@ const styles = {
14
14
  export const ToolbarSubscriptButton = createMarkToolbarButton({
15
15
  title: 'Subscript',
16
16
  mark: MARKS.SUBSCRIPT,
17
- icon: /*#__PURE__*/ React.createElement(SubscriptIcon, {
17
+ icon: React.createElement(SubscriptIcon, {
18
18
  viewBox: "0 0 23 18"
19
19
  })
20
20
  });
@@ -23,7 +23,7 @@ export const ToolbarDropdownSubscriptButton = createMarkToolbarButton({
23
23
  mark: MARKS.SUBSCRIPT
24
24
  });
25
25
  export function Subscript(props) {
26
- return /*#__PURE__*/ React.createElement("sub", {
26
+ return React.createElement("sub", {
27
27
  ...props.attributes,
28
28
  className: styles.subscript
29
29
  }, props.children);
@@ -14,14 +14,14 @@ const styles = {
14
14
  export const ToolbarSuperscriptButton = createMarkToolbarButton({
15
15
  title: 'Superscript',
16
16
  mark: MARKS.SUPERSCRIPT,
17
- icon: /*#__PURE__*/ React.createElement(SuperscriptIcon, null)
17
+ icon: React.createElement(SuperscriptIcon, null)
18
18
  });
19
19
  export const ToolbarDropdownSuperscriptButton = createMarkToolbarButton({
20
20
  title: 'Superscript',
21
21
  mark: MARKS.SUPERSCRIPT
22
22
  });
23
23
  export function Superscript(props) {
24
- return /*#__PURE__*/ React.createElement("sup", {
24
+ return React.createElement("sup", {
25
25
  ...props.attributes,
26
26
  className: styles.superscript
27
27
  }, props.children);
@@ -8,10 +8,10 @@ import { buildMarkEventHandler } from './helpers';
8
8
  export const ToolbarUnderlineButton = createMarkToolbarButton({
9
9
  title: 'Underline',
10
10
  mark: MARKS.UNDERLINE,
11
- icon: /*#__PURE__*/ React.createElement(FormatUnderlinedIcon, null)
11
+ icon: React.createElement(FormatUnderlinedIcon, null)
12
12
  });
13
13
  export function Underline(props) {
14
- return /*#__PURE__*/ React.createElement("u", props.attributes, props.children);
14
+ return React.createElement("u", props.attributes, props.children);
15
15
  }
16
16
  export const createUnderlinePlugin = ()=>createDefaultUnderlinePlugin({
17
17
  type: MARKS.UNDERLINE,
@@ -13,8 +13,8 @@ const styles = {
13
13
  color: tokens.blue600
14
14
  })
15
15
  };
16
- export const createMarkToolbarButton = ({ mark, title, icon })=>{
17
- const Mark = ({ isDisabled })=>{
16
+ export const createMarkToolbarButton = ({ mark , title , icon })=>{
17
+ const Mark = ({ isDisabled })=>{
18
18
  const editor = useContentfulEditor();
19
19
  const handleClick = React.useCallback(()=>{
20
20
  if (!editor?.selection) return;
@@ -29,7 +29,7 @@ export const createMarkToolbarButton = ({ mark, title, icon })=>{
29
29
  ]);
30
30
  if (!editor) return null;
31
31
  if (!icon) {
32
- return /*#__PURE__*/ React.createElement(Menu.Item, {
32
+ return React.createElement(Menu.Item, {
33
33
  onClick: handleClick,
34
34
  disabled: isDisabled,
35
35
  className: cx({
@@ -38,7 +38,7 @@ export const createMarkToolbarButton = ({ mark, title, icon })=>{
38
38
  testId: `${mark}-toolbar-button`
39
39
  }, title);
40
40
  }
41
- return /*#__PURE__*/ React.createElement(ToolbarButton, {
41
+ return React.createElement(ToolbarButton, {
42
42
  title: title,
43
43
  testId: `${mark}-toolbar-button`,
44
44
  onClick: handleClick,
@@ -13,7 +13,7 @@ export const toggleMarkAndDeactivateConflictingMarks = (editor, mark)=>{
13
13
  clear
14
14
  });
15
15
  };
16
- export const buildMarkEventHandler = (type)=>(editor, { options: { hotkey } })=>(event)=>{
16
+ export const buildMarkEventHandler = (type)=>(editor, { options: { hotkey } })=>(event)=>{
17
17
  if (editor.selection && hotkey && isHotkey(hotkey, event)) {
18
18
  event.preventDefault();
19
19
  const isActive = isMarkActive(editor, type);
@@ -4,11 +4,8 @@ import { transformWrapIn } from '../../helpers/transformers';
4
4
  import { getParentNode, isText } from '../../internal/queries';
5
5
  const isInline = (node)=>INLINE_TYPES.includes(node.type);
6
6
  const isTextContainer = (node)=>TEXT_CONTAINERS.includes(node.type);
7
- // Base rules are rules that must be enforced at all times regardless
8
- // of which plugins are enabled.
9
7
  export const baseRules = [
10
8
  {
11
- // Wrap orphaned text nodes in a paragraph
12
9
  match: isText,
13
10
  validNode: (editor, [, path])=>{
14
11
  const parent = getParentNode(editor, path)?.[0];
@@ -19,7 +16,6 @@ export const baseRules = [
19
16
  }
20
17
  },
21
18
  {
22
- // Wrap orphaned inline nodes in a paragraph,
23
19
  match: {
24
20
  type: INLINE_TYPES
25
21
  },
@@ -1,4 +1,4 @@
1
- /** @jsx jsx */ import { BLOCKS, INLINES } from '@contentful/rich-text-types';
1
+ import { BLOCKS, INLINES } from '@contentful/rich-text-types';
2
2
  import { transformWrapIn } from '../../helpers/transformers';
3
3
  import { jsx, createTestEditor, mockPlugin, assertOutput } from '../../test-utils';
4
4
  import { createNormalizerPlugin } from './createNormalizerPlugin';
@@ -12,15 +12,15 @@ describe('Normalizer', ()=>{
12
12
  ];
13
13
  let input;
14
14
  beforeEach(()=>{
15
- input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hembed", {
15
+ input = jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hembed", {
16
16
  type: "Entry",
17
17
  id: "embedded-entry"
18
- }), /*#__PURE__*/ jsx("hp", null, "List item"))));
18
+ }), jsx("hp", null, "List item"))));
19
19
  });
20
- const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "List item"))));
20
+ const expected = jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hp", null, "List item"))));
21
21
  describe('rule.match', ()=>{
22
22
  it('matches elements of type "plugin.type" by default', ()=>{
23
- const { editor } = createTestEditor({
23
+ const { editor } = createTestEditor({
24
24
  input,
25
25
  plugins: [
26
26
  mockPlugin({
@@ -50,14 +50,14 @@ describe('Normalizer', ()=>{
50
50
  });
51
51
  describe('rule.transform', ()=>{
52
52
  it('works with conditional transformation', ()=>{
53
- const { editor } = createTestEditor({
54
- input: /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hembed", {
53
+ const { editor } = createTestEditor({
54
+ input: jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hembed", {
55
55
  type: "Entry",
56
56
  id: "embedded-entry"
57
- }), /*#__PURE__*/ jsx("hinline", {
57
+ }), jsx("hinline", {
58
58
  type: "Entry",
59
59
  id: "inline-entry"
60
- }), /*#__PURE__*/ jsx("hp", null, "List item")))),
60
+ }), jsx("hp", null, "List item")))),
61
61
  plugins: [
62
62
  mockPlugin({
63
63
  isElement: true,
@@ -78,16 +78,16 @@ describe('Normalizer', ()=>{
78
78
  });
79
79
  assertOutput({
80
80
  editor,
81
- expected: /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("hinline", {
81
+ expected: jsx("editor", null, jsx("hul", null, jsx("hli", null, jsx("hp", null, jsx("hinline", {
82
82
  type: "Entry",
83
83
  id: "inline-entry"
84
- })), /*#__PURE__*/ jsx("hp", null, "List item"))))
84
+ })), jsx("hp", null, "List item"))))
85
85
  });
86
86
  });
87
87
  });
88
88
  describe('rule.validChildren', ()=>{
89
89
  it('supports custom functions', ()=>{
90
- const { editor } = createTestEditor({
90
+ const { editor } = createTestEditor({
91
91
  input,
92
92
  plugins: [
93
93
  mockPlugin({
@@ -5,7 +5,6 @@ export const createValidatorFromTypes = (types)=>(_, [node])=>{
5
5
  return isElement(node) && types.includes(node.type);
6
6
  };
7
7
  export const createTransformerFromObject = (transforms)=>{
8
- // A default transformer must always be provided
9
8
  const fallback = transforms['default'];
10
9
  if (!fallback) {
11
10
  throw new NormalizerError('A default transformer MUST be provided');
@@ -6,35 +6,25 @@ import { baseRules } from './baseRules';
6
6
  import { NormalizerError, createValidatorFromTypes, createTransformerFromObject } from './utils';
7
7
  export const withNormalizer = (editor)=>{
8
8
  const rules = baseRules;
9
- // Derive normalization rules from other plugin's configurations
10
9
  for (const p of editor.plugins){
11
- const { normalizer: _rules } = p;
10
+ const { normalizer: _rules } = p;
12
11
  if (!_rules) {
13
12
  continue;
14
13
  }
15
14
  for (const _rule of _rules){
16
- // Clone to avoid mutation bugs
17
15
  const rule = {
18
16
  ..._rule
19
17
  };
20
18
  if (!rule.match && !p.isElement) {
21
19
  throw new NormalizerError('rule.match MUST be defined in a non-element plugin');
22
20
  }
23
- // By default we filter elements with given plugin type
24
21
  if (!rule.match) {
25
22
  rule.match = {
26
23
  type: getPluginType(editor, p.key)
27
24
  };
28
25
  }
29
- // Conditional transformation e.g.
30
- // {
31
- // [BLOCKS.EMBEDDED_ASSET]: transformLift,
32
- // default?: transformRemove
33
- // }
34
- //
35
26
  if (isPlainObject(rule.transform)) {
36
27
  if ('validNode' in rule) {
37
- // I can't think of a use case. Disabled to prevent misuse
38
28
  throw new NormalizerError('conditional transformations are not supported in validNode rules');
39
29
  }
40
30
  rule.transform = createTransformerFromObject({
@@ -42,43 +32,33 @@ export const withNormalizer = (editor)=>{
42
32
  ...rule.transform
43
33
  });
44
34
  }
45
- // By default all invalid nodes are removed.
46
35
  if (!rule.transform) {
47
36
  rule.transform = transformRemove;
48
37
  }
49
- // Convert Types array syntax to a validator function
50
38
  if ('validChildren' in rule && Array.isArray(rule.validChildren)) {
51
39
  rule.validChildren = createValidatorFromTypes(rule.validChildren);
52
40
  }
53
41
  rules.push(rule);
54
42
  }
55
43
  }
56
- // Wrap transformer in a withoutNormalizing() call to avoid unnecessary
57
- // normalization cycles.
58
44
  const _transform = (tr, entry)=>{
59
45
  withoutNormalizing(editor, ()=>{
60
46
  tr(editor, entry);
61
47
  });
62
48
  };
63
- const { normalizeNode } = editor;
64
- // @ts-expect-error
49
+ const { normalizeNode } = editor;
65
50
  editor.normalizeNode = (entry)=>{
66
51
  const [node, path] = entry;
67
52
  const children = getChildren(entry);
68
- // The order of validNode rules Vs validChildren doesn't matter. Slate
69
- // will always perform normalization in a depth-first fashion.
70
53
  for (const rule of rules){
71
54
  if (!matchNode(node, path, rule.match)) {
72
55
  continue;
73
56
  }
74
- // Normalize node
75
57
  if ('validNode' in rule && !rule.validNode(editor, entry)) {
76
58
  _transform(rule.transform, entry);
77
59
  return;
78
60
  }
79
- // Normalize node.children
80
61
  if ('validChildren' in rule) {
81
- // It can not be an array since we enforced it earlier
82
62
  const isValidChild = rule.validChildren;
83
63
  const invalidChildEntry = children.find((entry)=>!isValidChild(editor, entry));
84
64
  if (invalidChildEntry) {
@@ -9,7 +9,7 @@ const styles = {
9
9
  `
10
10
  };
11
11
  export function Paragraph(props) {
12
- return /*#__PURE__*/ React.createElement("div", {
12
+ return React.createElement("div", {
13
13
  ...props.attributes,
14
14
  className: styles[BLOCKS.PARAGRAPH]
15
15
  }, props.children);
@@ -1,16 +1,16 @@
1
- /* eslint-disable react/no-unknown-property */ /** @jsx jsx */ import { assertOutput, jsx } from '../../../test-utils';
1
+ import { assertOutput, jsx } from '../../../test-utils';
2
2
  describe('normalization', ()=>{
3
3
  it('can contain inline entries & hyperlinks', ()=>{
4
- const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "some text before", /*#__PURE__*/ jsx("hinline", {
4
+ const input = jsx("editor", null, jsx("hp", null, "some text before", jsx("hinline", {
5
5
  type: "Entry",
6
6
  id: "inline-entry"
7
- }), /*#__PURE__*/ jsx("hlink", {
7
+ }), jsx("hlink", {
8
8
  uri: "https://contentful.com"
9
- }), /*#__PURE__*/ jsx("hlink", {
9
+ }), jsx("hlink", {
10
10
  entry: "entry-id"
11
- }), /*#__PURE__*/ jsx("hlink", {
11
+ }), jsx("hlink", {
12
12
  resource: "resource-urn"
13
- }), /*#__PURE__*/ jsx("hlink", {
13
+ }), jsx("hlink", {
14
14
  asset: "asset-id"
15
15
  }), "some text after"));
16
16
  assertOutput({
@@ -19,20 +19,20 @@ describe('normalization', ()=>{
19
19
  });
20
20
  });
21
21
  it('wraps orphaned text nodes in a paragraph', ()=>{
22
- const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "valid text"), /*#__PURE__*/ jsx("hh1", null, "valid text"), /*#__PURE__*/ jsx("htable", null, /*#__PURE__*/ jsx("htr", null, /*#__PURE__*/ jsx("htd", null, "invalid text"))));
23
- const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "valid text"), /*#__PURE__*/ jsx("hh1", null, "valid text"), /*#__PURE__*/ jsx("htable", null, /*#__PURE__*/ jsx("htr", null, /*#__PURE__*/ jsx("htd", null, /*#__PURE__*/ jsx("hp", null, "invalid text")))), /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("htext", null)));
22
+ const input = jsx("editor", null, jsx("hp", null, "valid text"), jsx("hh1", null, "valid text"), jsx("htable", null, jsx("htr", null, jsx("htd", null, "invalid text"))));
23
+ const expected = jsx("editor", null, jsx("hp", null, "valid text"), jsx("hh1", null, "valid text"), jsx("htable", null, jsx("htr", null, jsx("htd", null, jsx("hp", null, "invalid text")))), jsx("hp", null, jsx("htext", null)));
24
24
  assertOutput({
25
25
  input,
26
26
  expected
27
27
  });
28
28
  });
29
29
  it('unwraps nested paragraphs', ()=>{
30
- const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "some", /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("htext", {
30
+ const input = jsx("editor", null, jsx("hp", null, "some", jsx("hp", null, jsx("htext", {
31
31
  bold: true,
32
32
  italic: true,
33
33
  underline: true
34
34
  }, "paragraph")), "text"));
35
- const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "some", /*#__PURE__*/ jsx("htext", {
35
+ const expected = jsx("editor", null, jsx("hp", null, "some", jsx("htext", {
36
36
  bold: true,
37
37
  italic: true,
38
38
  underline: true
@@ -44,76 +44,76 @@ describe('normalization', ()=>{
44
44
  });
45
45
  describe('lifts other invalid children', ()=>{
46
46
  it('block void elements', ()=>{
47
- const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("hembed", {
47
+ const input = jsx("editor", null, jsx("hp", null, jsx("hembed", {
48
48
  type: "Asset",
49
49
  id: "1"
50
- }), " start"), /*#__PURE__*/ jsx("hp", null, "end ", /*#__PURE__*/ jsx("hembed", {
50
+ }), " start"), jsx("hp", null, "end ", jsx("hembed", {
51
51
  type: "Asset",
52
52
  id: "2"
53
- })), /*#__PURE__*/ jsx("hp", null, "in ", /*#__PURE__*/ jsx("hembed", {
53
+ })), jsx("hp", null, "in ", jsx("hembed", {
54
54
  type: "Asset",
55
55
  id: "3"
56
- }), " between"), /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("hembed", {
56
+ }), " between"), jsx("hp", null, jsx("hembed", {
57
57
  type: "Entry",
58
58
  id: "1"
59
- }), " start"), /*#__PURE__*/ jsx("hp", null, "end ", /*#__PURE__*/ jsx("hembed", {
59
+ }), " start"), jsx("hp", null, "end ", jsx("hembed", {
60
60
  type: "Entry",
61
61
  id: "2"
62
- })), /*#__PURE__*/ jsx("hp", null, "in ", /*#__PURE__*/ jsx("hembed", {
62
+ })), jsx("hp", null, "in ", jsx("hembed", {
63
63
  type: "Entry",
64
64
  id: "3"
65
- }), " between"), /*#__PURE__*/ jsx("hp", null, /*#__PURE__*/ jsx("hhr", null), " start"), /*#__PURE__*/ jsx("hp", null, "end ", /*#__PURE__*/ jsx("hhr", null)), /*#__PURE__*/ jsx("hp", null, "in ", /*#__PURE__*/ jsx("hhr", null), " between"));
66
- const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hembed", {
65
+ }), " between"), jsx("hp", null, jsx("hhr", null), " start"), jsx("hp", null, "end ", jsx("hhr", null)), jsx("hp", null, "in ", jsx("hhr", null), " between"));
66
+ const expected = jsx("editor", null, jsx("hembed", {
67
67
  type: "Asset",
68
68
  id: "1"
69
- }), /*#__PURE__*/ jsx("hp", null, " start"), /*#__PURE__*/ jsx("hp", null, "end "), /*#__PURE__*/ jsx("hembed", {
69
+ }), jsx("hp", null, " start"), jsx("hp", null, "end "), jsx("hembed", {
70
70
  type: "Asset",
71
71
  id: "2"
72
- }), /*#__PURE__*/ jsx("hp", null, "in "), /*#__PURE__*/ jsx("hembed", {
72
+ }), jsx("hp", null, "in "), jsx("hembed", {
73
73
  type: "Asset",
74
74
  id: "3"
75
- }), /*#__PURE__*/ jsx("hp", null, " between"), /*#__PURE__*/ jsx("hembed", {
75
+ }), jsx("hp", null, " between"), jsx("hembed", {
76
76
  type: "Entry",
77
77
  id: "1"
78
- }), /*#__PURE__*/ jsx("hp", null, " start"), /*#__PURE__*/ jsx("hp", null, "end "), /*#__PURE__*/ jsx("hembed", {
78
+ }), jsx("hp", null, " start"), jsx("hp", null, "end "), jsx("hembed", {
79
79
  type: "Entry",
80
80
  id: "2"
81
- }), /*#__PURE__*/ jsx("hp", null, "in "), /*#__PURE__*/ jsx("hembed", {
81
+ }), jsx("hp", null, "in "), jsx("hembed", {
82
82
  type: "Entry",
83
83
  id: "3"
84
- }), /*#__PURE__*/ jsx("hp", null, " between"), /*#__PURE__*/ jsx("hhr", null), /*#__PURE__*/ jsx("hp", null, " start"), /*#__PURE__*/ jsx("hp", null, "end "), /*#__PURE__*/ jsx("hhr", null), /*#__PURE__*/ jsx("hp", null, "in "), /*#__PURE__*/ jsx("hhr", null), /*#__PURE__*/ jsx("hp", null, " between"));
84
+ }), jsx("hp", null, " between"), jsx("hhr", null), jsx("hp", null, " start"), jsx("hp", null, "end "), jsx("hhr", null), jsx("hp", null, "in "), jsx("hhr", null), jsx("hp", null, " between"));
85
85
  assertOutput({
86
86
  input,
87
87
  expected
88
88
  });
89
89
  });
90
90
  it('handles heading', ()=>{
91
- const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "some", /*#__PURE__*/ jsx("hh1", null, "heading"), "text"));
92
- const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "some"), /*#__PURE__*/ jsx("hh1", null, "heading"), /*#__PURE__*/ jsx("hp", null, "text"));
91
+ const input = jsx("editor", null, jsx("hp", null, "some", jsx("hh1", null, "heading"), "text"));
92
+ const expected = jsx("editor", null, jsx("hp", null, "some"), jsx("hh1", null, "heading"), jsx("hp", null, "text"));
93
93
  assertOutput({
94
94
  input,
95
95
  expected
96
96
  });
97
97
  });
98
98
  it('handles quotes', ()=>{
99
- const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "some", /*#__PURE__*/ jsx("hquote", null, /*#__PURE__*/ jsx("hp", null, "quote")), "text"));
100
- const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "some"), /*#__PURE__*/ jsx("hquote", null, /*#__PURE__*/ jsx("hp", null, "quote")), /*#__PURE__*/ jsx("hp", null, "text"));
99
+ const input = jsx("editor", null, jsx("hp", null, "some", jsx("hquote", null, jsx("hp", null, "quote")), "text"));
100
+ const expected = jsx("editor", null, jsx("hp", null, "some"), jsx("hquote", null, jsx("hp", null, "quote")), jsx("hp", null, "text"));
101
101
  assertOutput({
102
102
  input,
103
103
  expected
104
104
  });
105
105
  });
106
106
  it('handles lists', ()=>{
107
- const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "some", /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "list item"))), "text"));
108
- const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "some"), /*#__PURE__*/ jsx("hul", null, /*#__PURE__*/ jsx("hli", null, /*#__PURE__*/ jsx("hp", null, "list item"))), /*#__PURE__*/ jsx("hp", null, "text"));
107
+ const input = jsx("editor", null, jsx("hp", null, "some", jsx("hul", null, jsx("hli", null, jsx("hp", null, "list item"))), "text"));
108
+ const expected = jsx("editor", null, jsx("hp", null, "some"), jsx("hul", null, jsx("hli", null, jsx("hp", null, "list item"))), jsx("hp", null, "text"));
109
109
  assertOutput({
110
110
  input,
111
111
  expected
112
112
  });
113
113
  });
114
114
  it('handles tables', ()=>{
115
- const input = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "some", /*#__PURE__*/ jsx("htable", null, /*#__PURE__*/ jsx("htr", null, /*#__PURE__*/ jsx("htd", null, /*#__PURE__*/ jsx("hp", null, "cell 1")), /*#__PURE__*/ jsx("htd", null, /*#__PURE__*/ jsx("hp", null, "cell 2")))), "text"));
116
- const expected = /*#__PURE__*/ jsx("editor", null, /*#__PURE__*/ jsx("hp", null, "some"), /*#__PURE__*/ jsx("htable", null, /*#__PURE__*/ jsx("htr", null, /*#__PURE__*/ jsx("htd", null, /*#__PURE__*/ jsx("hp", null, "cell 1")), /*#__PURE__*/ jsx("htd", null, /*#__PURE__*/ jsx("hp", null, "cell 2")))), /*#__PURE__*/ jsx("hp", null, "text"));
115
+ const input = jsx("editor", null, jsx("hp", null, "some", jsx("htable", null, jsx("htr", null, jsx("htd", null, jsx("hp", null, "cell 1")), jsx("htd", null, jsx("hp", null, "cell 2")))), "text"));
116
+ const expected = jsx("editor", null, jsx("hp", null, "some"), jsx("htable", null, jsx("htr", null, jsx("htd", null, jsx("hp", null, "cell 1")), jsx("htd", null, jsx("hp", null, "cell 2")))), jsx("hp", null, "text"));
117
117
  assertOutput({
118
118
  input,
119
119
  expected
@@ -5,7 +5,7 @@ import { isInlineOrText, toggleElement } from '../../helpers/editor';
5
5
  import { transformUnwrap, transformLift } from '../../helpers/transformers';
6
6
  import { Paragraph } from './Paragraph';
7
7
  import { isEmbedElement, isEmptyElement } from './utils';
8
- const buildParagraphKeyDownHandler = (editor, { options: { hotkey } })=>(event)=>{
8
+ const buildParagraphKeyDownHandler = (editor, { options: { hotkey } })=>(event)=>{
9
9
  if (editor.selection && hotkey && isHotkey(hotkey, event)) {
10
10
  toggleElement(editor, {
11
11
  activeType: BLOCKS.PARAGRAPH,
@@ -26,7 +26,6 @@ export const createParagraphPlugin = ()=>{
26
26
  onKeyDown: buildParagraphKeyDownHandler
27
27
  },
28
28
  softBreak: [
29
- // create a new line with SHIFT+Enter inside a paragraph
30
29
  {
31
30
  hotkey: 'shift+enter',
32
31
  query: {
@@ -1,17 +1,12 @@
1
1
  import { KEY_DESERIALIZE_HTML } from '@udecode/plate-common';
2
2
  import { sanitizeHTML } from './utils/sanitizeHTML';
3
- /**
4
- * Get x-slate-fragment attribute from data-slate-fragment
5
- */ const catchSlateFragment = /data-slate-fragment="(.+?)"/m;
3
+ const catchSlateFragment = /data-slate-fragment="(.+?)"/m;
6
4
  export const getSlateFragmentAttribute = (dataTransfer)=>{
7
5
  const htmlData = dataTransfer.getData('text/html');
8
6
  const [, fragment] = htmlData.match(catchSlateFragment) || [];
9
7
  return fragment;
10
8
  };
11
- /**
12
- * Get the x-slate-fragment attribute that exist in text/html data
13
- * and append it to the DataTransfer object
14
- */ export const ensureXSlateFragment = (dataTransfer)=>{
9
+ export const ensureXSlateFragment = (dataTransfer)=>{
15
10
  if (!dataTransfer.getData('application/x-slate-fragment')) {
16
11
  const fragment = getSlateFragmentAttribute(dataTransfer);
17
12
  if (fragment) {
@@ -28,7 +23,7 @@ export const getSlateFragmentAttribute = (dataTransfer)=>{
28
23
  export const createPasteHTMLPlugin = ()=>({
29
24
  key: 'PasteHTMLPlugin',
30
25
  withOverrides: (editor)=>{
31
- const { insertData } = editor;
26
+ const { insertData } = editor;
32
27
  editor.insertData = (data)=>insertData(ensureXSlateFragment(data));
33
28
  return editor;
34
29
  },
@@ -38,7 +33,6 @@ export const createPasteHTMLPlugin = ()=>({
38
33
  editor: {
39
34
  insertData: {
40
35
  format: 'text/html',
41
- // Perform custom content transformation *before* pasting
42
36
  transformData: sanitizeHTML
43
37
  }
44
38
  }
@@ -2,7 +2,6 @@ import { sanitizeHTML } from '../sanitizeHTML';
2
2
  describe('HTML Sanitization', ()=>{
3
3
  it('removes unsupported elements from <a>', ()=>{
4
4
  const cases = [
5
- // Supported
6
5
  {
7
6
  input: '<h1><a href="#">Link in h1</a></h1>',
8
7
  output: 'unchanged'
@@ -31,7 +30,6 @@ describe('HTML Sanitization', ()=>{
31
30
  input: '<a href="#"><u>u in Link</u></a>',
32
31
  output: 'unchanged'
33
32
  },
34
- // Unsupported. Should be unwrapped
35
33
  {
36
34
  input: '<a href="#"><h1>h1 in Link</h1><h2>this is h2</h2></a>',
37
35
  output: '<a href="#">h1 in Link this is h2</a>'