@contentful/field-editor-rich-text 3.15.0 → 3.15.2

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 (321) hide show
  1. package/dist/cjs/ContentfulEditorProvider.js +8 -8
  2. package/dist/cjs/RichTextEditor.js +22 -20
  3. package/dist/cjs/RichTextEditor.styles.js +2 -1
  4. package/dist/cjs/SdkProvider.js +7 -5
  5. package/dist/cjs/SyncEditorChanges.js +15 -6
  6. package/dist/cjs/Toolbar/_tests_/toolbar.test.js +17 -15
  7. package/dist/cjs/Toolbar/components/EmbedEntityWidget.js +14 -10
  8. package/dist/cjs/Toolbar/components/EmbeddedEntityDropdownButton.js +10 -8
  9. package/dist/cjs/Toolbar/components/StickyToolbarWrapper.js +2 -2
  10. package/dist/cjs/Toolbar/index.js +33 -30
  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 +8 -6
  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 +1 -0
  19. package/dist/cjs/dialogs/HypelinkDialog/HyperlinkDialog.js +43 -38
  20. package/dist/cjs/dialogs/openRichTextDialog.js +6 -4
  21. package/dist/cjs/dialogs/renderRichTextDialog.js +6 -4
  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 +53 -44
  26. package/dist/cjs/helpers/environment.js +3 -3
  27. package/dist/cjs/helpers/formatDateAndTime.js +5 -4
  28. package/dist/cjs/helpers/getAllowedResourcesForNodeType.js +22 -5
  29. package/dist/cjs/helpers/getLinkedContentTypeIdsForNodeType.js +29 -5
  30. package/dist/cjs/helpers/nodeFactory.js +6 -6
  31. package/dist/cjs/helpers/sdkNavigatorSlideIn.js +14 -6
  32. package/dist/cjs/helpers/sdkNavigatorSlideIn.spec.js +3 -2
  33. package/dist/cjs/helpers/toSlateValue.js +14 -3
  34. package/dist/cjs/helpers/transformers.js +5 -5
  35. package/dist/cjs/helpers/validations.js +12 -9
  36. package/dist/cjs/index.js +7 -5
  37. package/dist/cjs/internal/constants.js +4 -2
  38. package/dist/cjs/internal/hooks.js +8 -6
  39. package/dist/cjs/internal/misc.js +15 -12
  40. package/dist/cjs/internal/queries.js +115 -108
  41. package/dist/cjs/internal/transforms.js +51 -48
  42. package/dist/cjs/internal/types/editor.js +3 -1
  43. package/dist/cjs/plugins/Break/createExitBreakPlugin.test.js +4 -3
  44. package/dist/cjs/plugins/Break/createResetNodePlugin.js +1 -0
  45. package/dist/cjs/plugins/Break/createSoftBreakPlugin.test.js +3 -3
  46. package/dist/cjs/plugins/CommandPalette/components/CommandList.js +35 -33
  47. package/dist/cjs/plugins/CommandPalette/components/CommandList.styles.js +1 -1
  48. package/dist/cjs/plugins/CommandPalette/components/CommandPrompt.js +7 -5
  49. package/dist/cjs/plugins/CommandPalette/hooks/useCommandList.js +7 -3
  50. package/dist/cjs/plugins/CommandPalette/onKeyDown.js +6 -1
  51. package/dist/cjs/plugins/CommandPalette/onKeyDown.spec.js +6 -4
  52. package/dist/cjs/plugins/CommandPalette/useCommands.js +3 -3
  53. package/dist/cjs/plugins/CommandPalette/utils/fetchEntries.js +2 -0
  54. package/dist/cjs/plugins/CommandPalette/utils/trimLeadingSlash.js +6 -1
  55. package/dist/cjs/plugins/DragAndDrop/index.js +9 -1
  56. package/dist/cjs/plugins/EmbeddedEntityBlock/LinkedEntityBlock.js +10 -8
  57. package/dist/cjs/plugins/EmbeddedEntityBlock/index.js +3 -3
  58. package/dist/cjs/plugins/EmbeddedEntityInline/FetchingWrappedInlineEntryCard.js +19 -17
  59. package/dist/cjs/plugins/EmbeddedEntityInline/LinkedEntityInline.js +9 -7
  60. package/dist/cjs/plugins/EmbeddedResourceBlock/LinkedResourceBlock.js +5 -5
  61. package/dist/cjs/plugins/EmbeddedResourceInline/FetchingWrappedResourceInlineCard.js +13 -11
  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 +13 -10
  65. package/dist/cjs/plugins/Heading/components/ToolbarHeadingButton.js +19 -11
  66. package/dist/cjs/plugins/Heading/createHeadingPlugin.js +7 -2
  67. package/dist/cjs/plugins/Hr/index.js +19 -14
  68. package/dist/cjs/plugins/Hyperlink/HyperlinkModal.js +32 -28
  69. package/dist/cjs/plugins/Hyperlink/__tests__/createHyperlinkPlugin.test.js +8 -8
  70. package/dist/cjs/plugins/Hyperlink/components/EntityHyperlink.js +8 -6
  71. package/dist/cjs/plugins/Hyperlink/components/ResourceHyperlink.js +8 -6
  72. package/dist/cjs/plugins/Hyperlink/components/ToolbarHyperlinkButton.js +6 -4
  73. package/dist/cjs/plugins/Hyperlink/components/UrlHyperlink.js +7 -5
  74. package/dist/cjs/plugins/Hyperlink/components/styles.js +1 -1
  75. package/dist/cjs/plugins/Hyperlink/createHyperlinkPlugin.js +10 -4
  76. package/dist/cjs/plugins/Hyperlink/useEntityInfo.js +6 -3
  77. package/dist/cjs/plugins/Hyperlink/useResourceEntityInfo.js +6 -4
  78. package/dist/cjs/plugins/Hyperlink/utils.js +4 -4
  79. package/dist/cjs/plugins/List/__tests__/createListPlugin.test.js +13 -13
  80. package/dist/cjs/plugins/List/__tests__/insertListBreak.test.js +29 -25
  81. package/dist/cjs/plugins/List/__tests__/insertListFragment.test.js +22 -22
  82. package/dist/cjs/plugins/List/components/List.js +9 -7
  83. package/dist/cjs/plugins/List/components/ListItem.js +6 -4
  84. package/dist/cjs/plugins/List/components/ToolbarListButton.js +7 -5
  85. package/dist/cjs/plugins/List/createListPlugin.js +4 -0
  86. package/dist/cjs/plugins/List/insertListBreak.js +13 -4
  87. package/dist/cjs/plugins/List/insertListFragment.js +18 -5
  88. package/dist/cjs/plugins/List/onKeyDownList.js +7 -4
  89. package/dist/cjs/plugins/List/transforms/insertListItem.js +17 -2
  90. package/dist/cjs/plugins/List/transforms/moveListItemDown.js +8 -2
  91. package/dist/cjs/plugins/List/transforms/moveListItems.js +7 -2
  92. package/dist/cjs/plugins/List/transforms/moveListItems.test.js +15 -14
  93. package/dist/cjs/plugins/List/transforms/toggleList.js +8 -3
  94. package/dist/cjs/plugins/List/transforms/toggleList.spec.js +28 -28
  95. package/dist/cjs/plugins/List/transforms/unwrapList.js +7 -2
  96. package/dist/cjs/plugins/List/utils.js +12 -11
  97. package/dist/cjs/plugins/List/withList.js +6 -2
  98. package/dist/cjs/plugins/Marks/Bold.js +9 -7
  99. package/dist/cjs/plugins/Marks/Code.js +15 -7
  100. package/dist/cjs/plugins/Marks/Italic.js +9 -7
  101. package/dist/cjs/plugins/Marks/Subscript.js +10 -8
  102. package/dist/cjs/plugins/Marks/Superscript.js +10 -8
  103. package/dist/cjs/plugins/Marks/Underline.js +6 -4
  104. package/dist/cjs/plugins/Marks/components/MarkToolbarButton.js +9 -7
  105. package/dist/cjs/plugins/Marks/helpers.js +5 -5
  106. package/dist/cjs/plugins/Normalizer/baseRules.js +2 -0
  107. package/dist/cjs/plugins/Normalizer/createNormalizerPlugin.test.js +12 -12
  108. package/dist/cjs/plugins/Normalizer/utils.js +4 -3
  109. package/dist/cjs/plugins/Normalizer/withNormalizer.js +23 -3
  110. package/dist/cjs/plugins/Paragraph/Paragraph.js +6 -4
  111. package/dist/cjs/plugins/Paragraph/__tests__/createParagraphPlugin.test.js +32 -32
  112. package/dist/cjs/plugins/Paragraph/createParagraphPlugin.js +3 -2
  113. package/dist/cjs/plugins/PasteHTML/createPasteHTMLPlugin.js +9 -6
  114. package/dist/cjs/plugins/PasteHTML/utils/__tests__/sanitizeHTML.test.js +2 -0
  115. package/dist/cjs/plugins/PasteHTML/utils/sanitizeAnchors.js +9 -0
  116. package/dist/cjs/plugins/PasteHTML/utils/sanitizeHTML.js +17 -2
  117. package/dist/cjs/plugins/PasteHTML/utils/sanitizeSheets.js +13 -1
  118. package/dist/cjs/plugins/Quote/__test__/createQuotePlugin.test.js +21 -21
  119. package/dist/cjs/plugins/Quote/components/Quote.js +6 -4
  120. package/dist/cjs/plugins/Quote/components/ToolbarQuoteButton.js +6 -4
  121. package/dist/cjs/plugins/Quote/createQuotePlugin.js +1 -0
  122. package/dist/cjs/plugins/Quote/toggleQuote.js +5 -5
  123. package/dist/cjs/plugins/Quote/withQuote.js +4 -2
  124. package/dist/cjs/plugins/SelectOnBackspace/createSelectOnBackspacePlugin.js +1 -0
  125. package/dist/cjs/plugins/Table/__tests__/createTablePlugin.test.js +22 -22
  126. package/dist/cjs/plugins/Table/__tests__/helpers.test.js +4 -4
  127. package/dist/cjs/plugins/Table/actions/addColumn.js +5 -4
  128. package/dist/cjs/plugins/Table/actions/addRow.js +6 -3
  129. package/dist/cjs/plugins/Table/components/Cell.js +7 -5
  130. package/dist/cjs/plugins/Table/components/HeaderCell.js +7 -5
  131. package/dist/cjs/plugins/Table/components/Row.js +6 -4
  132. package/dist/cjs/plugins/Table/components/Table.js +8 -6
  133. package/dist/cjs/plugins/Table/components/TableActions.js +19 -16
  134. package/dist/cjs/plugins/Table/components/ToolbarButton.js +7 -4
  135. package/dist/cjs/plugins/Table/createTablePlugin.js +11 -1
  136. package/dist/cjs/plugins/Table/helpers.js +16 -12
  137. package/dist/cjs/plugins/Table/insertTableFragment.js +15 -2
  138. package/dist/cjs/plugins/Table/onKeyDownTable.js +10 -2
  139. package/dist/cjs/plugins/Table/tableTracking.js +6 -6
  140. package/dist/cjs/plugins/Text/__tests__/createTextPlugin.test.js +19 -17
  141. package/dist/cjs/plugins/Text/createTextPlugin.js +22 -5
  142. package/dist/cjs/plugins/Tracking/createTrackingPlugin.js +5 -4
  143. package/dist/cjs/plugins/Tracking/utils.js +6 -3
  144. package/dist/cjs/plugins/Voids/createVoidsPlugin.js +5 -0
  145. package/dist/cjs/plugins/Voids/transformVoid.js +1 -0
  146. package/dist/cjs/plugins/index.js +15 -3
  147. package/dist/cjs/plugins/shared/EmbeddedBlockToolbarIcon.js +12 -10
  148. package/dist/cjs/plugins/shared/EmbeddedBlockUtil.js +16 -6
  149. package/dist/cjs/plugins/shared/EmbeddedInlineToolbarIcon.js +10 -8
  150. package/dist/cjs/plugins/shared/EmbeddedInlineUtil.js +9 -5
  151. package/dist/cjs/plugins/shared/FetchingWrappedAssetCard.js +13 -11
  152. package/dist/cjs/plugins/shared/FetchingWrappedEntryCard.js +14 -12
  153. package/dist/cjs/plugins/shared/FetchingWrappedResourceCard.js +14 -11
  154. package/dist/cjs/plugins/shared/LinkedBlockWrapper.js +8 -4
  155. package/dist/cjs/plugins/shared/LinkedInlineWrapper.js +10 -6
  156. package/dist/cjs/plugins/shared/ResourceNewBadge.js +5 -3
  157. package/dist/cjs/plugins/shared/ToolbarButton.js +8 -6
  158. package/dist/cjs/plugins/shared/__tests__/FetchingWrappedAssetCard.test.js +10 -5
  159. package/dist/cjs/plugins/shared/__tests__/FetchingWrappedEntryCard.test.js +11 -6
  160. package/dist/cjs/plugins/shared/__tests__/FetchingWrappedResourceCard.test.js +15 -13
  161. package/dist/cjs/plugins/shared/utils.js +4 -1
  162. package/dist/cjs/test-utils/assertOutput.js +1 -0
  163. package/dist/cjs/test-utils/hyperscript.d.js +1 -0
  164. package/dist/cjs/test-utils/randomId.js +3 -1
  165. package/dist/cjs/test-utils/validation.js +8 -5
  166. package/dist/esm/ContentfulEditorProvider.js +4 -1
  167. package/dist/esm/RichTextEditor.js +13 -13
  168. package/dist/esm/RichTextEditor.styles.js +1 -0
  169. package/dist/esm/SdkProvider.js +2 -2
  170. package/dist/esm/SyncEditorChanges.js +18 -3
  171. package/dist/esm/Toolbar/_tests_/toolbar.test.js +12 -12
  172. package/dist/esm/Toolbar/components/EmbedEntityWidget.js +10 -8
  173. package/dist/esm/Toolbar/components/EmbeddedEntityDropdownButton.js +6 -6
  174. package/dist/esm/Toolbar/components/StickyToolbarWrapper.js +1 -1
  175. package/dist/esm/Toolbar/index.js +28 -27
  176. package/dist/esm/__fixtures__/FakeSdk.js +3 -3
  177. package/dist/esm/constants/Schema.js +1 -0
  178. package/dist/esm/dialogs/HypelinkDialog/HyperlinkDialog.js +34 -31
  179. package/dist/esm/dialogs/openRichTextDialog.js +2 -2
  180. package/dist/esm/dialogs/renderRichTextDialog.js +2 -2
  181. package/dist/esm/helpers/__tests__/removeInternalMarks.test.js +10 -10
  182. package/dist/esm/helpers/callbacks.js +1 -1
  183. package/dist/esm/helpers/config.js +9 -1
  184. package/dist/esm/helpers/editor.js +22 -6
  185. package/dist/esm/helpers/extractNodes.js +3 -1
  186. package/dist/esm/helpers/formatDateAndTime.js +11 -2
  187. package/dist/esm/helpers/getAllowedResourcesForNodeType.js +19 -2
  188. package/dist/esm/helpers/getLinkedContentTypeIdsForNodeType.js +26 -2
  189. package/dist/esm/helpers/sdkNavigatorSlideIn.js +20 -6
  190. package/dist/esm/helpers/sdkNavigatorSlideIn.spec.js +1 -0
  191. package/dist/esm/helpers/toSlateValue.js +17 -3
  192. package/dist/esm/helpers/validations.js +5 -1
  193. package/dist/esm/internal/misc.js +23 -2
  194. package/dist/esm/internal/queries.js +11 -2
  195. package/dist/esm/internal/transforms.js +14 -3
  196. package/dist/esm/internal/types/editor.js +3 -1
  197. package/dist/esm/plugins/Break/createExitBreakPlugin.test.js +4 -3
  198. package/dist/esm/plugins/Break/createResetNodePlugin.js +1 -0
  199. package/dist/esm/plugins/Break/createSoftBreakPlugin.test.js +3 -3
  200. package/dist/esm/plugins/CommandPalette/components/CommandList.js +30 -30
  201. package/dist/esm/plugins/CommandPalette/components/CommandPrompt.js +2 -2
  202. package/dist/esm/plugins/CommandPalette/createCommandPalettePlugin.js +11 -1
  203. package/dist/esm/plugins/CommandPalette/hooks/useCommandList.js +2 -0
  204. package/dist/esm/plugins/CommandPalette/onKeyDown.js +5 -0
  205. package/dist/esm/plugins/CommandPalette/onKeyDown.spec.js +2 -2
  206. package/dist/esm/plugins/CommandPalette/useCommands.js +3 -3
  207. package/dist/esm/plugins/CommandPalette/utils/fetchEntries.js +2 -0
  208. package/dist/esm/plugins/CommandPalette/utils/trimLeadingSlash.js +6 -1
  209. package/dist/esm/plugins/DragAndDrop/index.js +9 -1
  210. package/dist/esm/plugins/EmbeddedEntityBlock/LinkedEntityBlock.js +6 -6
  211. package/dist/esm/plugins/EmbeddedEntityInline/FetchingWrappedInlineEntryCard.js +14 -14
  212. package/dist/esm/plugins/EmbeddedEntityInline/LinkedEntityInline.js +5 -5
  213. package/dist/esm/plugins/EmbeddedResourceBlock/LinkedResourceBlock.js +4 -4
  214. package/dist/esm/plugins/EmbeddedResourceInline/FetchingWrappedResourceInlineCard.js +9 -9
  215. package/dist/esm/plugins/EmbeddedResourceInline/LinkedResourceInline.js +4 -4
  216. package/dist/esm/plugins/Heading/__tests__/createHeadingPlugin.test.js +32 -32
  217. package/dist/esm/plugins/Heading/components/Heading.js +8 -7
  218. package/dist/esm/plugins/Heading/components/ToolbarHeadingButton.js +14 -8
  219. package/dist/esm/plugins/Heading/createHeadingPlugin.js +6 -1
  220. package/dist/esm/plugins/Hr/index.js +8 -5
  221. package/dist/esm/plugins/Hyperlink/HyperlinkModal.js +25 -23
  222. package/dist/esm/plugins/Hyperlink/__tests__/createHyperlinkPlugin.test.js +8 -8
  223. package/dist/esm/plugins/Hyperlink/components/EntityHyperlink.js +4 -4
  224. package/dist/esm/plugins/Hyperlink/components/ResourceHyperlink.js +4 -4
  225. package/dist/esm/plugins/Hyperlink/components/ToolbarHyperlinkButton.js +2 -2
  226. package/dist/esm/plugins/Hyperlink/components/UrlHyperlink.js +3 -3
  227. package/dist/esm/plugins/Hyperlink/createHyperlinkPlugin.js +5 -1
  228. package/dist/esm/plugins/Hyperlink/useEntityInfo.js +6 -3
  229. package/dist/esm/plugins/Hyperlink/useResourceEntityInfo.js +2 -2
  230. package/dist/esm/plugins/Hyperlink/utils.js +1 -1
  231. package/dist/esm/plugins/List/__tests__/createListPlugin.test.js +13 -13
  232. package/dist/esm/plugins/List/__tests__/insertListBreak.test.js +29 -25
  233. package/dist/esm/plugins/List/__tests__/insertListFragment.test.js +22 -22
  234. package/dist/esm/plugins/List/components/List.js +1 -1
  235. package/dist/esm/plugins/List/components/ListItem.js +1 -1
  236. package/dist/esm/plugins/List/components/ToolbarListButton.js +3 -3
  237. package/dist/esm/plugins/List/createListPlugin.js +4 -0
  238. package/dist/esm/plugins/List/insertListBreak.js +13 -4
  239. package/dist/esm/plugins/List/insertListFragment.js +18 -5
  240. package/dist/esm/plugins/List/onKeyDownList.js +5 -2
  241. package/dist/esm/plugins/List/transforms/insertListItem.js +20 -3
  242. package/dist/esm/plugins/List/transforms/moveListItemDown.js +8 -2
  243. package/dist/esm/plugins/List/transforms/moveListItems.js +7 -2
  244. package/dist/esm/plugins/List/transforms/moveListItems.test.js +15 -14
  245. package/dist/esm/plugins/List/transforms/toggleList.js +8 -3
  246. package/dist/esm/plugins/List/transforms/toggleList.spec.js +28 -28
  247. package/dist/esm/plugins/List/transforms/unwrapList.js +7 -2
  248. package/dist/esm/plugins/List/utils.js +7 -2
  249. package/dist/esm/plugins/List/withList.js +6 -2
  250. package/dist/esm/plugins/Marks/Bold.js +2 -2
  251. package/dist/esm/plugins/Marks/Code.js +8 -2
  252. package/dist/esm/plugins/Marks/Italic.js +2 -2
  253. package/dist/esm/plugins/Marks/Subscript.js +2 -2
  254. package/dist/esm/plugins/Marks/Superscript.js +2 -2
  255. package/dist/esm/plugins/Marks/Underline.js +2 -2
  256. package/dist/esm/plugins/Marks/components/MarkToolbarButton.js +4 -4
  257. package/dist/esm/plugins/Marks/helpers.js +1 -1
  258. package/dist/esm/plugins/Normalizer/baseRules.js +4 -0
  259. package/dist/esm/plugins/Normalizer/createNormalizerPlugin.test.js +12 -12
  260. package/dist/esm/plugins/Normalizer/utils.js +1 -0
  261. package/dist/esm/plugins/Normalizer/withNormalizer.js +22 -2
  262. package/dist/esm/plugins/Paragraph/Paragraph.js +1 -1
  263. package/dist/esm/plugins/Paragraph/__tests__/createParagraphPlugin.test.js +32 -32
  264. package/dist/esm/plugins/Paragraph/createParagraphPlugin.js +2 -1
  265. package/dist/esm/plugins/PasteHTML/createPasteHTMLPlugin.js +9 -3
  266. package/dist/esm/plugins/PasteHTML/utils/__tests__/sanitizeHTML.test.js +2 -0
  267. package/dist/esm/plugins/PasteHTML/utils/sanitizeAnchors.js +27 -1
  268. package/dist/esm/plugins/PasteHTML/utils/sanitizeHTML.js +17 -2
  269. package/dist/esm/plugins/PasteHTML/utils/sanitizeSheets.js +13 -1
  270. package/dist/esm/plugins/Quote/__test__/createQuotePlugin.test.js +21 -21
  271. package/dist/esm/plugins/Quote/components/Quote.js +1 -1
  272. package/dist/esm/plugins/Quote/components/ToolbarQuoteButton.js +2 -2
  273. package/dist/esm/plugins/Quote/createQuotePlugin.js +1 -0
  274. package/dist/esm/plugins/Quote/shouldResetQuote.js +6 -1
  275. package/dist/esm/plugins/Quote/toggleQuote.js +1 -1
  276. package/dist/esm/plugins/Quote/withQuote.js +4 -2
  277. package/dist/esm/plugins/SelectOnBackspace/createSelectOnBackspacePlugin.js +1 -0
  278. package/dist/esm/plugins/Table/__tests__/createTablePlugin.test.js +22 -22
  279. package/dist/esm/plugins/Table/__tests__/helpers.test.js +4 -4
  280. package/dist/esm/plugins/Table/actions/addColumn.js +2 -1
  281. package/dist/esm/plugins/Table/actions/addRow.js +3 -0
  282. package/dist/esm/plugins/Table/components/Cell.js +2 -2
  283. package/dist/esm/plugins/Table/components/HeaderCell.js +2 -2
  284. package/dist/esm/plugins/Table/components/Row.js +1 -1
  285. package/dist/esm/plugins/Table/components/Table.js +3 -3
  286. package/dist/esm/plugins/Table/components/TableActions.js +12 -11
  287. package/dist/esm/plugins/Table/components/ToolbarButton.js +3 -2
  288. package/dist/esm/plugins/Table/createTablePlugin.js +11 -1
  289. package/dist/esm/plugins/Table/helpers.js +10 -1
  290. package/dist/esm/plugins/Table/insertTableFragment.js +15 -2
  291. package/dist/esm/plugins/Table/onKeyDownTable.js +10 -2
  292. package/dist/esm/plugins/Table/tableTracking.js +6 -6
  293. package/dist/esm/plugins/Text/__tests__/createTextPlugin.test.js +19 -17
  294. package/dist/esm/plugins/Text/createTextPlugin.js +22 -5
  295. package/dist/esm/plugins/Tracking/createTrackingPlugin.js +2 -1
  296. package/dist/esm/plugins/Tracking/utils.js +1 -0
  297. package/dist/esm/plugins/Voids/createVoidsPlugin.js +5 -0
  298. package/dist/esm/plugins/Voids/transformVoid.js +4 -1
  299. package/dist/esm/plugins/index.js +12 -0
  300. package/dist/esm/plugins/shared/EmbeddedBlockToolbarIcon.js +5 -5
  301. package/dist/esm/plugins/shared/EmbeddedBlockUtil.js +15 -5
  302. package/dist/esm/plugins/shared/EmbeddedInlineToolbarIcon.js +5 -5
  303. package/dist/esm/plugins/shared/EmbeddedInlineUtil.js +8 -4
  304. package/dist/esm/plugins/shared/FetchingWrappedAssetCard.js +8 -8
  305. package/dist/esm/plugins/shared/FetchingWrappedEntryCard.js +9 -9
  306. package/dist/esm/plugins/shared/FetchingWrappedResourceCard.js +9 -8
  307. package/dist/esm/plugins/shared/LinkedBlockWrapper.js +7 -3
  308. package/dist/esm/plugins/shared/LinkedInlineWrapper.js +5 -3
  309. package/dist/esm/plugins/shared/ResourceNewBadge.js +1 -1
  310. package/dist/esm/plugins/shared/ToolbarButton.js +3 -3
  311. package/dist/esm/plugins/shared/__tests__/FetchingWrappedAssetCard.test.js +5 -2
  312. package/dist/esm/plugins/shared/__tests__/FetchingWrappedEntryCard.test.js +5 -2
  313. package/dist/esm/plugins/shared/__tests__/FetchingWrappedResourceCard.test.js +8 -8
  314. package/dist/esm/plugins/shared/utils.js +4 -1
  315. package/dist/esm/test-utils/assertOutput.js +1 -0
  316. package/dist/esm/test-utils/hyperscript.d.js +1 -0
  317. package/dist/esm/test-utils/jsx.js +5 -1
  318. package/dist/esm/test-utils/randomId.js +3 -1
  319. package/dist/esm/test-utils/setEmptyDataAttribute.js +4 -1
  320. package/dist/esm/test-utils/validation.js +7 -4
  321. package/package.json +3 -3
@@ -9,20 +9,20 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- ToolbarSuperscriptButton: function() {
13
- return ToolbarSuperscriptButton;
12
+ Superscript: function() {
13
+ return Superscript;
14
14
  },
15
15
  ToolbarDropdownSuperscriptButton: function() {
16
16
  return ToolbarDropdownSuperscriptButton;
17
17
  },
18
- Superscript: function() {
19
- return Superscript;
18
+ ToolbarSuperscriptButton: function() {
19
+ return ToolbarSuperscriptButton;
20
20
  },
21
21
  createSuperscriptPlugin: function() {
22
22
  return createSuperscriptPlugin;
23
23
  }
24
24
  });
25
- const _react = _interop_require_wildcard(require("react"));
25
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
26
26
  const _f36icons = require("@contentful/f36-icons");
27
27
  const _richtexttypes = require("@contentful/rich-text-types");
28
28
  const _platebasicmarks = require("@udecode/plate-basic-marks");
@@ -50,7 +50,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
50
50
  if (cache && cache.has(obj)) {
51
51
  return cache.get(obj);
52
52
  }
53
- var newObj = {};
53
+ var newObj = {
54
+ __proto__: null
55
+ };
54
56
  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
55
57
  for(var key in obj){
56
58
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
@@ -77,14 +79,14 @@ const styles = {
77
79
  const ToolbarSuperscriptButton = (0, _MarkToolbarButton.createMarkToolbarButton)({
78
80
  title: 'Superscript',
79
81
  mark: _richtexttypes.MARKS.SUPERSCRIPT,
80
- icon: _react.createElement(_f36icons.SuperscriptIcon, null)
82
+ icon: /*#__PURE__*/ _react.createElement(_f36icons.SuperscriptIcon, null)
81
83
  });
82
84
  const ToolbarDropdownSuperscriptButton = (0, _MarkToolbarButton.createMarkToolbarButton)({
83
85
  title: 'Superscript',
84
86
  mark: _richtexttypes.MARKS.SUPERSCRIPT
85
87
  });
86
88
  function Superscript(props) {
87
- return _react.createElement("sup", {
89
+ return /*#__PURE__*/ _react.createElement("sup", {
88
90
  ...props.attributes,
89
91
  className: styles.superscript
90
92
  }, props.children);
@@ -19,7 +19,7 @@ _export(exports, {
19
19
  return createUnderlinePlugin;
20
20
  }
21
21
  });
22
- const _react = _interop_require_wildcard(require("react"));
22
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
23
23
  const _f36icons = require("@contentful/f36-icons");
24
24
  const _richtexttypes = require("@contentful/rich-text-types");
25
25
  const _platebasicmarks = require("@udecode/plate-basic-marks");
@@ -47,7 +47,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
47
47
  if (cache && cache.has(obj)) {
48
48
  return cache.get(obj);
49
49
  }
50
- var newObj = {};
50
+ var newObj = {
51
+ __proto__: null
52
+ };
51
53
  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
52
54
  for(var key in obj){
53
55
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
@@ -68,10 +70,10 @@ function _interop_require_wildcard(obj, nodeInterop) {
68
70
  const ToolbarUnderlineButton = (0, _MarkToolbarButton.createMarkToolbarButton)({
69
71
  title: 'Underline',
70
72
  mark: _richtexttypes.MARKS.UNDERLINE,
71
- icon: _react.createElement(_f36icons.FormatUnderlinedIcon, null)
73
+ icon: /*#__PURE__*/ _react.createElement(_f36icons.FormatUnderlinedIcon, null)
72
74
  });
73
75
  function Underline(props) {
74
- return _react.createElement("u", props.attributes, props.children);
76
+ return /*#__PURE__*/ _react.createElement("u", props.attributes, props.children);
75
77
  }
76
78
  const createUnderlinePlugin = ()=>(0, _platebasicmarks.createUnderlinePlugin)({
77
79
  type: _richtexttypes.MARKS.UNDERLINE,
@@ -8,9 +8,9 @@ Object.defineProperty(exports, "createMarkToolbarButton", {
8
8
  return createMarkToolbarButton;
9
9
  }
10
10
  });
11
- const _react = _interop_require_wildcard(require("react"));
11
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
12
12
  const _f36components = require("@contentful/f36-components");
13
- const _f36tokens = _interop_require_default(require("@contentful/f36-tokens"));
13
+ const _f36tokens = /*#__PURE__*/ _interop_require_default(require("@contentful/f36-tokens"));
14
14
  const _emotion = require("emotion");
15
15
  const _ContentfulEditorProvider = require("../../../ContentfulEditorProvider");
16
16
  const _editor = require("../../../helpers/editor");
@@ -43,7 +43,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
43
43
  if (cache && cache.has(obj)) {
44
44
  return cache.get(obj);
45
45
  }
46
- var newObj = {};
46
+ var newObj = {
47
+ __proto__: null
48
+ };
47
49
  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
48
50
  for(var key in obj){
49
51
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
@@ -67,8 +69,8 @@ const styles = {
67
69
  color: _f36tokens.default.blue600
68
70
  })
69
71
  };
70
- const createMarkToolbarButton = ({ mark , title , icon })=>{
71
- const Mark = ({ isDisabled })=>{
72
+ const createMarkToolbarButton = ({ mark, title, icon })=>{
73
+ const Mark = ({ isDisabled })=>{
72
74
  const editor = (0, _ContentfulEditorProvider.useContentfulEditor)();
73
75
  const handleClick = _react.useCallback(()=>{
74
76
  if (!editor?.selection) return;
@@ -83,7 +85,7 @@ const createMarkToolbarButton = ({ mark , title , icon })=>{
83
85
  ]);
84
86
  if (!editor) return null;
85
87
  if (!icon) {
86
- return _react.createElement(_f36components.Menu.Item, {
88
+ return /*#__PURE__*/ _react.createElement(_f36components.Menu.Item, {
87
89
  onClick: handleClick,
88
90
  disabled: isDisabled,
89
91
  className: (0, _emotion.cx)({
@@ -92,7 +94,7 @@ const createMarkToolbarButton = ({ mark , title , icon })=>{
92
94
  testId: `${mark}-toolbar-button`
93
95
  }, title);
94
96
  }
95
- return _react.createElement(_ToolbarButton.ToolbarButton, {
97
+ return /*#__PURE__*/ _react.createElement(_ToolbarButton.ToolbarButton, {
96
98
  title: title,
97
99
  testId: `${mark}-toolbar-button`,
98
100
  onClick: handleClick,
@@ -9,15 +9,15 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- toggleMarkAndDeactivateConflictingMarks: function() {
13
- return toggleMarkAndDeactivateConflictingMarks;
14
- },
15
12
  buildMarkEventHandler: function() {
16
13
  return buildMarkEventHandler;
14
+ },
15
+ toggleMarkAndDeactivateConflictingMarks: function() {
16
+ return toggleMarkAndDeactivateConflictingMarks;
17
17
  }
18
18
  });
19
19
  const _richtexttypes = require("@contentful/rich-text-types");
20
- const _ishotkey = _interop_require_default(require("is-hotkey"));
20
+ const _ishotkey = /*#__PURE__*/ _interop_require_default(require("is-hotkey"));
21
21
  const _queries = require("../../internal/queries");
22
22
  const _transforms = require("../../internal/transforms");
23
23
  function _interop_require_default(obj) {
@@ -36,7 +36,7 @@ const toggleMarkAndDeactivateConflictingMarks = (editor, mark)=>{
36
36
  clear
37
37
  });
38
38
  };
39
- const buildMarkEventHandler = (type)=>(editor, { options: { hotkey } })=>(event)=>{
39
+ const buildMarkEventHandler = (type)=>(editor, { options: { hotkey } })=>(event)=>{
40
40
  if (editor.selection && hotkey && (0, _ishotkey.default)(hotkey, event)) {
41
41
  event.preventDefault();
42
42
  const isActive = (0, _queries.isMarkActive)(editor, type);
@@ -16,6 +16,7 @@ const isInline = (node)=>_editor.INLINE_TYPES.includes(node.type);
16
16
  const isTextContainer = (node)=>_richtexttypes.TEXT_CONTAINERS.includes(node.type);
17
17
  const baseRules = [
18
18
  {
19
+ // Wrap orphaned text nodes in a paragraph
19
20
  match: _queries.isText,
20
21
  validNode: (editor, [, path])=>{
21
22
  const parent = (0, _queries.getParentNode)(editor, path)?.[0];
@@ -26,6 +27,7 @@ const baseRules = [
26
27
  }
27
28
  },
28
29
  {
30
+ // Wrap orphaned inline nodes in a paragraph,
29
31
  match: {
30
32
  type: _editor.INLINE_TYPES
31
33
  },
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ /** @jsx jsx */ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
@@ -16,15 +16,15 @@ describe('Normalizer', ()=>{
16
16
  ];
17
17
  let input;
18
18
  beforeEach(()=>{
19
- input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hul", null, (0, _testutils.jsx)("hli", null, (0, _testutils.jsx)("hembed", {
19
+ input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hul", null, /*#__PURE__*/ (0, _testutils.jsx)("hli", null, /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
20
20
  type: "Entry",
21
21
  id: "embedded-entry"
22
- }), (0, _testutils.jsx)("hp", null, "List item"))));
22
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "List item"))));
23
23
  });
24
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hul", null, (0, _testutils.jsx)("hli", null, (0, _testutils.jsx)("hp", null, "List item"))));
24
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hul", null, /*#__PURE__*/ (0, _testutils.jsx)("hli", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "List item"))));
25
25
  describe('rule.match', ()=>{
26
26
  it('matches elements of type "plugin.type" by default', ()=>{
27
- const { editor } = (0, _testutils.createTestEditor)({
27
+ const { editor } = (0, _testutils.createTestEditor)({
28
28
  input,
29
29
  plugins: [
30
30
  (0, _testutils.mockPlugin)({
@@ -54,14 +54,14 @@ describe('Normalizer', ()=>{
54
54
  });
55
55
  describe('rule.transform', ()=>{
56
56
  it('works with conditional transformation', ()=>{
57
- const { editor } = (0, _testutils.createTestEditor)({
58
- input: (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hul", null, (0, _testutils.jsx)("hli", null, (0, _testutils.jsx)("hembed", {
57
+ const { editor } = (0, _testutils.createTestEditor)({
58
+ input: /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hul", null, /*#__PURE__*/ (0, _testutils.jsx)("hli", null, /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
59
59
  type: "Entry",
60
60
  id: "embedded-entry"
61
- }), (0, _testutils.jsx)("hinline", {
61
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hinline", {
62
62
  type: "Entry",
63
63
  id: "inline-entry"
64
- }), (0, _testutils.jsx)("hp", null, "List item")))),
64
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "List item")))),
65
65
  plugins: [
66
66
  (0, _testutils.mockPlugin)({
67
67
  isElement: true,
@@ -82,16 +82,16 @@ describe('Normalizer', ()=>{
82
82
  });
83
83
  (0, _testutils.assertOutput)({
84
84
  editor,
85
- expected: (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hul", null, (0, _testutils.jsx)("hli", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("hinline", {
85
+ expected: /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hul", null, /*#__PURE__*/ (0, _testutils.jsx)("hli", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("hinline", {
86
86
  type: "Entry",
87
87
  id: "inline-entry"
88
- })), (0, _testutils.jsx)("hp", null, "List item"))))
88
+ })), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "List item"))))
89
89
  });
90
90
  });
91
91
  });
92
92
  describe('rule.validChildren', ()=>{
93
93
  it('supports custom functions', ()=>{
94
- const { editor } = (0, _testutils.createTestEditor)({
94
+ const { editor } = (0, _testutils.createTestEditor)({
95
95
  input,
96
96
  plugins: [
97
97
  (0, _testutils.mockPlugin)({
@@ -12,11 +12,11 @@ _export(exports, {
12
12
  NormalizerError: function() {
13
13
  return NormalizerError;
14
14
  },
15
- createValidatorFromTypes: function() {
16
- return createValidatorFromTypes;
17
- },
18
15
  createTransformerFromObject: function() {
19
16
  return createTransformerFromObject;
17
+ },
18
+ createValidatorFromTypes: function() {
19
+ return createValidatorFromTypes;
20
20
  }
21
21
  });
22
22
  const _queries = require("../../internal/queries");
@@ -26,6 +26,7 @@ const createValidatorFromTypes = (types)=>(_, [node])=>{
26
26
  return (0, _queries.isElement)(node) && types.includes(node.type);
27
27
  };
28
28
  const createTransformerFromObject = (transforms)=>{
29
+ // A default transformer must always be provided
29
30
  const fallback = transforms['default'];
30
31
  if (!fallback) {
31
32
  throw new NormalizerError('A default transformer MUST be provided');
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "withNormalizer", {
8
8
  return withNormalizer;
9
9
  }
10
10
  });
11
- const _isplainobj = _interop_require_default(require("is-plain-obj"));
11
+ const _isplainobj = /*#__PURE__*/ _interop_require_default(require("is-plain-obj"));
12
12
  const _transformers = require("../../helpers/transformers");
13
13
  const _internal = require("../../internal");
14
14
  const _queries = require("../../internal/queries");
@@ -21,25 +21,35 @@ function _interop_require_default(obj) {
21
21
  }
22
22
  const withNormalizer = (editor)=>{
23
23
  const rules = _baseRules.baseRules;
24
+ // Derive normalization rules from other plugin's configurations
24
25
  for (const p of editor.plugins){
25
- const { normalizer: _rules } = p;
26
+ const { normalizer: _rules } = p;
26
27
  if (!_rules) {
27
28
  continue;
28
29
  }
29
30
  for (const _rule of _rules){
31
+ // Clone to avoid mutation bugs
30
32
  const rule = {
31
33
  ..._rule
32
34
  };
33
35
  if (!rule.match && !p.isElement) {
34
36
  throw new _utils.NormalizerError('rule.match MUST be defined in a non-element plugin');
35
37
  }
38
+ // By default we filter elements with given plugin type
36
39
  if (!rule.match) {
37
40
  rule.match = {
38
41
  type: (0, _queries.getPluginType)(editor, p.key)
39
42
  };
40
43
  }
44
+ // Conditional transformation e.g.
45
+ // {
46
+ // [BLOCKS.EMBEDDED_ASSET]: transformLift,
47
+ // default?: transformRemove
48
+ // }
49
+ //
41
50
  if ((0, _isplainobj.default)(rule.transform)) {
42
51
  if ('validNode' in rule) {
52
+ // I can't think of a use case. Disabled to prevent misuse
43
53
  throw new _utils.NormalizerError('conditional transformations are not supported in validNode rules');
44
54
  }
45
55
  rule.transform = (0, _utils.createTransformerFromObject)({
@@ -47,33 +57,43 @@ const withNormalizer = (editor)=>{
47
57
  ...rule.transform
48
58
  });
49
59
  }
60
+ // By default all invalid nodes are removed.
50
61
  if (!rule.transform) {
51
62
  rule.transform = _transformers.transformRemove;
52
63
  }
64
+ // Convert Types array syntax to a validator function
53
65
  if ('validChildren' in rule && Array.isArray(rule.validChildren)) {
54
66
  rule.validChildren = (0, _utils.createValidatorFromTypes)(rule.validChildren);
55
67
  }
56
68
  rules.push(rule);
57
69
  }
58
70
  }
71
+ // Wrap transformer in a withoutNormalizing() call to avoid unnecessary
72
+ // normalization cycles.
59
73
  const _transform = (tr, entry)=>{
60
74
  (0, _internal.withoutNormalizing)(editor, ()=>{
61
75
  tr(editor, entry);
62
76
  });
63
77
  };
64
- const { normalizeNode } = editor;
78
+ const { normalizeNode } = editor;
79
+ // @ts-expect-error
65
80
  editor.normalizeNode = (entry)=>{
66
81
  const [node, path] = entry;
67
82
  const children = (0, _queries.getChildren)(entry);
83
+ // The order of validNode rules Vs validChildren doesn't matter. Slate
84
+ // will always perform normalization in a depth-first fashion.
68
85
  for (const rule of rules){
69
86
  if (!(0, _queries.matchNode)(node, path, rule.match)) {
70
87
  continue;
71
88
  }
89
+ // Normalize node
72
90
  if ('validNode' in rule && !rule.validNode(editor, entry)) {
73
91
  _transform(rule.transform, entry);
74
92
  return;
75
93
  }
94
+ // Normalize node.children
76
95
  if ('validChildren' in rule) {
96
+ // It can not be an array since we enforced it earlier
77
97
  const isValidChild = rule.validChildren;
78
98
  const invalidChildEntry = children.find((entry)=>!isValidChild(editor, entry));
79
99
  if (invalidChildEntry) {
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "Paragraph", {
8
8
  return Paragraph;
9
9
  }
10
10
  });
11
- const _react = _interop_require_wildcard(require("react"));
12
- const _f36tokens = _interop_require_default(require("@contentful/f36-tokens"));
11
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
12
+ const _f36tokens = /*#__PURE__*/ _interop_require_default(require("@contentful/f36-tokens"));
13
13
  const _richtexttypes = require("@contentful/rich-text-types");
14
14
  const _emotion = require("emotion");
15
15
  function _interop_require_default(obj) {
@@ -38,7 +38,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
38
38
  if (cache && cache.has(obj)) {
39
39
  return cache.get(obj);
40
40
  }
41
- var newObj = {};
41
+ var newObj = {
42
+ __proto__: null
43
+ };
42
44
  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
43
45
  for(var key in obj){
44
46
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
@@ -63,7 +65,7 @@ const styles = {
63
65
  `
64
66
  };
65
67
  function Paragraph(props) {
66
- return _react.createElement("div", {
68
+ return /*#__PURE__*/ _react.createElement("div", {
67
69
  ...props.attributes,
68
70
  className: styles[_richtexttypes.BLOCKS.PARAGRAPH]
69
71
  }, props.children);
@@ -1,20 +1,20 @@
1
- "use strict";
1
+ /* eslint-disable react/no-unknown-property */ /** @jsx jsx */ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
5
  const _testutils = require("../../../test-utils");
6
6
  describe('normalization', ()=>{
7
7
  it('can contain inline entries & hyperlinks', ()=>{
8
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "some text before", (0, _testutils.jsx)("hinline", {
8
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some text before", /*#__PURE__*/ (0, _testutils.jsx)("hinline", {
9
9
  type: "Entry",
10
10
  id: "inline-entry"
11
- }), (0, _testutils.jsx)("hlink", {
11
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hlink", {
12
12
  uri: "https://contentful.com"
13
- }), (0, _testutils.jsx)("hlink", {
13
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hlink", {
14
14
  entry: "entry-id"
15
- }), (0, _testutils.jsx)("hlink", {
15
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hlink", {
16
16
  resource: "resource-urn"
17
- }), (0, _testutils.jsx)("hlink", {
17
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hlink", {
18
18
  asset: "asset-id"
19
19
  }), "some text after"));
20
20
  (0, _testutils.assertOutput)({
@@ -23,20 +23,20 @@ describe('normalization', ()=>{
23
23
  });
24
24
  });
25
25
  it('wraps orphaned text nodes in a paragraph', ()=>{
26
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "valid text"), (0, _testutils.jsx)("hh1", null, "valid text"), (0, _testutils.jsx)("htable", null, (0, _testutils.jsx)("htr", null, (0, _testutils.jsx)("htd", null, "invalid text"))));
27
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "valid text"), (0, _testutils.jsx)("hh1", null, "valid text"), (0, _testutils.jsx)("htable", null, (0, _testutils.jsx)("htr", null, (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "invalid text")))), (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", null)));
26
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "valid text"), /*#__PURE__*/ (0, _testutils.jsx)("hh1", null, "valid text"), /*#__PURE__*/ (0, _testutils.jsx)("htable", null, /*#__PURE__*/ (0, _testutils.jsx)("htr", null, /*#__PURE__*/ (0, _testutils.jsx)("htd", null, "invalid text"))));
27
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "valid text"), /*#__PURE__*/ (0, _testutils.jsx)("hh1", null, "valid text"), /*#__PURE__*/ (0, _testutils.jsx)("htable", null, /*#__PURE__*/ (0, _testutils.jsx)("htr", null, /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "invalid text")))), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("htext", null)));
28
28
  (0, _testutils.assertOutput)({
29
29
  input,
30
30
  expected
31
31
  });
32
32
  });
33
33
  it('unwraps nested paragraphs', ()=>{
34
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "some", (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", {
34
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some", /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("htext", {
35
35
  bold: true,
36
36
  italic: true,
37
37
  underline: true
38
38
  }, "paragraph")), "text"));
39
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "some", (0, _testutils.jsx)("htext", {
39
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some", /*#__PURE__*/ (0, _testutils.jsx)("htext", {
40
40
  bold: true,
41
41
  italic: true,
42
42
  underline: true
@@ -48,76 +48,76 @@ describe('normalization', ()=>{
48
48
  });
49
49
  describe('lifts other invalid children', ()=>{
50
50
  it('block void elements', ()=>{
51
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("hembed", {
51
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
52
52
  type: "Asset",
53
53
  id: "1"
54
- }), " start"), (0, _testutils.jsx)("hp", null, "end ", (0, _testutils.jsx)("hembed", {
54
+ }), " start"), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "end ", /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
55
55
  type: "Asset",
56
56
  id: "2"
57
- })), (0, _testutils.jsx)("hp", null, "in ", (0, _testutils.jsx)("hembed", {
57
+ })), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "in ", /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
58
58
  type: "Asset",
59
59
  id: "3"
60
- }), " between"), (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("hembed", {
60
+ }), " between"), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
61
61
  type: "Entry",
62
62
  id: "1"
63
- }), " start"), (0, _testutils.jsx)("hp", null, "end ", (0, _testutils.jsx)("hembed", {
63
+ }), " start"), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "end ", /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
64
64
  type: "Entry",
65
65
  id: "2"
66
- })), (0, _testutils.jsx)("hp", null, "in ", (0, _testutils.jsx)("hembed", {
66
+ })), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "in ", /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
67
67
  type: "Entry",
68
68
  id: "3"
69
- }), " between"), (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("hhr", null), " start"), (0, _testutils.jsx)("hp", null, "end ", (0, _testutils.jsx)("hhr", null)), (0, _testutils.jsx)("hp", null, "in ", (0, _testutils.jsx)("hhr", null), " between"));
70
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hembed", {
69
+ }), " between"), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("hhr", null), " start"), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "end ", /*#__PURE__*/ (0, _testutils.jsx)("hhr", null)), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "in ", /*#__PURE__*/ (0, _testutils.jsx)("hhr", null), " between"));
70
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
71
71
  type: "Asset",
72
72
  id: "1"
73
- }), (0, _testutils.jsx)("hp", null, " start"), (0, _testutils.jsx)("hp", null, "end "), (0, _testutils.jsx)("hembed", {
73
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, " start"), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "end "), /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
74
74
  type: "Asset",
75
75
  id: "2"
76
- }), (0, _testutils.jsx)("hp", null, "in "), (0, _testutils.jsx)("hembed", {
76
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "in "), /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
77
77
  type: "Asset",
78
78
  id: "3"
79
- }), (0, _testutils.jsx)("hp", null, " between"), (0, _testutils.jsx)("hembed", {
79
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, " between"), /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
80
80
  type: "Entry",
81
81
  id: "1"
82
- }), (0, _testutils.jsx)("hp", null, " start"), (0, _testutils.jsx)("hp", null, "end "), (0, _testutils.jsx)("hembed", {
82
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, " start"), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "end "), /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
83
83
  type: "Entry",
84
84
  id: "2"
85
- }), (0, _testutils.jsx)("hp", null, "in "), (0, _testutils.jsx)("hembed", {
85
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "in "), /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
86
86
  type: "Entry",
87
87
  id: "3"
88
- }), (0, _testutils.jsx)("hp", null, " between"), (0, _testutils.jsx)("hhr", null), (0, _testutils.jsx)("hp", null, " start"), (0, _testutils.jsx)("hp", null, "end "), (0, _testutils.jsx)("hhr", null), (0, _testutils.jsx)("hp", null, "in "), (0, _testutils.jsx)("hhr", null), (0, _testutils.jsx)("hp", null, " between"));
88
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, " between"), /*#__PURE__*/ (0, _testutils.jsx)("hhr", null), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, " start"), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "end "), /*#__PURE__*/ (0, _testutils.jsx)("hhr", null), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "in "), /*#__PURE__*/ (0, _testutils.jsx)("hhr", null), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, " between"));
89
89
  (0, _testutils.assertOutput)({
90
90
  input,
91
91
  expected
92
92
  });
93
93
  });
94
94
  it('handles heading', ()=>{
95
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "some", (0, _testutils.jsx)("hh1", null, "heading"), "text"));
96
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "some"), (0, _testutils.jsx)("hh1", null, "heading"), (0, _testutils.jsx)("hp", null, "text"));
95
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some", /*#__PURE__*/ (0, _testutils.jsx)("hh1", null, "heading"), "text"));
96
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some"), /*#__PURE__*/ (0, _testutils.jsx)("hh1", null, "heading"), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "text"));
97
97
  (0, _testutils.assertOutput)({
98
98
  input,
99
99
  expected
100
100
  });
101
101
  });
102
102
  it('handles quotes', ()=>{
103
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "some", (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, "quote")), "text"));
104
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "some"), (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, "quote")), (0, _testutils.jsx)("hp", null, "text"));
103
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some", /*#__PURE__*/ (0, _testutils.jsx)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "quote")), "text"));
104
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some"), /*#__PURE__*/ (0, _testutils.jsx)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "quote")), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "text"));
105
105
  (0, _testutils.assertOutput)({
106
106
  input,
107
107
  expected
108
108
  });
109
109
  });
110
110
  it('handles lists', ()=>{
111
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "some", (0, _testutils.jsx)("hul", null, (0, _testutils.jsx)("hli", null, (0, _testutils.jsx)("hp", null, "list item"))), "text"));
112
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "some"), (0, _testutils.jsx)("hul", null, (0, _testutils.jsx)("hli", null, (0, _testutils.jsx)("hp", null, "list item"))), (0, _testutils.jsx)("hp", null, "text"));
111
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some", /*#__PURE__*/ (0, _testutils.jsx)("hul", null, /*#__PURE__*/ (0, _testutils.jsx)("hli", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "list item"))), "text"));
112
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some"), /*#__PURE__*/ (0, _testutils.jsx)("hul", null, /*#__PURE__*/ (0, _testutils.jsx)("hli", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "list item"))), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "text"));
113
113
  (0, _testutils.assertOutput)({
114
114
  input,
115
115
  expected
116
116
  });
117
117
  });
118
118
  it('handles tables', ()=>{
119
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "some", (0, _testutils.jsx)("htable", null, (0, _testutils.jsx)("htr", null, (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell 1")), (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell 2")))), "text"));
120
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "some"), (0, _testutils.jsx)("htable", null, (0, _testutils.jsx)("htr", null, (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell 1")), (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell 2")))), (0, _testutils.jsx)("hp", null, "text"));
119
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some", /*#__PURE__*/ (0, _testutils.jsx)("htable", null, /*#__PURE__*/ (0, _testutils.jsx)("htr", null, /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell 1")), /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell 2")))), "text"));
120
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some"), /*#__PURE__*/ (0, _testutils.jsx)("htable", null, /*#__PURE__*/ (0, _testutils.jsx)("htr", null, /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell 1")), /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell 2")))), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "text"));
121
121
  (0, _testutils.assertOutput)({
122
122
  input,
123
123
  expected
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "createParagraphPlugin", {
10
10
  });
11
11
  const _richtexttypes = require("@contentful/rich-text-types");
12
12
  const _plateparagraph = require("@udecode/plate-paragraph");
13
- const _ishotkey = _interop_require_default(require("is-hotkey"));
13
+ const _ishotkey = /*#__PURE__*/ _interop_require_default(require("is-hotkey"));
14
14
  const _editor = require("../../helpers/editor");
15
15
  const _transformers = require("../../helpers/transformers");
16
16
  const _Paragraph = require("./Paragraph");
@@ -20,7 +20,7 @@ function _interop_require_default(obj) {
20
20
  default: obj
21
21
  };
22
22
  }
23
- const buildParagraphKeyDownHandler = (editor, { options: { hotkey } })=>(event)=>{
23
+ const buildParagraphKeyDownHandler = (editor, { options: { hotkey } })=>(event)=>{
24
24
  if (editor.selection && hotkey && (0, _ishotkey.default)(hotkey, event)) {
25
25
  (0, _editor.toggleElement)(editor, {
26
26
  activeType: _richtexttypes.BLOCKS.PARAGRAPH,
@@ -41,6 +41,7 @@ const createParagraphPlugin = ()=>{
41
41
  onKeyDown: buildParagraphKeyDownHandler
42
42
  },
43
43
  softBreak: [
44
+ // create a new line with SHIFT+Enter inside a paragraph
44
45
  {
45
46
  hotkey: 'shift+enter',
46
47
  query: {
@@ -9,19 +9,21 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- getSlateFragmentAttribute: function() {
13
- return getSlateFragmentAttribute;
12
+ createPasteHTMLPlugin: function() {
13
+ return createPasteHTMLPlugin;
14
14
  },
15
15
  ensureXSlateFragment: function() {
16
16
  return ensureXSlateFragment;
17
17
  },
18
- createPasteHTMLPlugin: function() {
19
- return createPasteHTMLPlugin;
18
+ getSlateFragmentAttribute: function() {
19
+ return getSlateFragmentAttribute;
20
20
  }
21
21
  });
22
22
  const _platecommon = require("@udecode/plate-common");
23
23
  const _sanitizeHTML = require("./utils/sanitizeHTML");
24
- const catchSlateFragment = /data-slate-fragment="(.+?)"/m;
24
+ /**
25
+ * Get x-slate-fragment attribute from data-slate-fragment
26
+ */ const catchSlateFragment = /data-slate-fragment="(.+?)"/m;
25
27
  const getSlateFragmentAttribute = (dataTransfer)=>{
26
28
  const htmlData = dataTransfer.getData('text/html');
27
29
  const [, fragment] = htmlData.match(catchSlateFragment) || [];
@@ -44,7 +46,7 @@ const ensureXSlateFragment = (dataTransfer)=>{
44
46
  const createPasteHTMLPlugin = ()=>({
45
47
  key: 'PasteHTMLPlugin',
46
48
  withOverrides: (editor)=>{
47
- const { insertData } = editor;
49
+ const { insertData } = editor;
48
50
  editor.insertData = (data)=>insertData(ensureXSlateFragment(data));
49
51
  return editor;
50
52
  },
@@ -54,6 +56,7 @@ const createPasteHTMLPlugin = ()=>({
54
56
  editor: {
55
57
  insertData: {
56
58
  format: 'text/html',
59
+ // Perform custom content transformation *before* pasting
57
60
  transformData: _sanitizeHTML.sanitizeHTML
58
61
  }
59
62
  }