@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
@@ -6,6 +6,7 @@ const _sanitizeHTML = require("../sanitizeHTML");
6
6
  describe('HTML Sanitization', ()=>{
7
7
  it('removes unsupported elements from <a>', ()=>{
8
8
  const cases = [
9
+ // Supported
9
10
  {
10
11
  input: '<h1><a href="#">Link in h1</a></h1>',
11
12
  output: 'unchanged'
@@ -34,6 +35,7 @@ describe('HTML Sanitization', ()=>{
34
35
  input: '<a href="#"><u>u in Link</u></a>',
35
36
  output: 'unchanged'
36
37
  },
38
+ // Unsupported. Should be unwrapped
37
39
  {
38
40
  input: '<a href="#"><h1>h1 in Link</h1><h2>this is h2</h2></a>',
39
41
  output: '<a href="#">h1 in Link this is h2</a>'
@@ -22,20 +22,29 @@ const wrapSpaceAround = (el)=>{
22
22
  }
23
23
  };
24
24
  const unwrap = (el)=>{
25
+ // add a spacer to avoid the content being cramped together with
26
+ // the element siblings after it's unwrapped. It may not always
27
+ // be desired but it should be easy to adjust by the end user.
25
28
  wrapSpaceAround(el);
26
29
  el.replaceWith(...Array.from(el.childNodes));
27
30
  };
28
31
  const sanitizeAnchors = (doc)=>{
29
32
  const unsupportedTagSelector = `a :not(${[
33
+ // Bold
30
34
  'b',
31
35
  'strong',
36
+ // Code
32
37
  'code',
33
38
  'pre',
39
+ // Italic
34
40
  'em',
35
41
  'i',
42
+ // Super/subscript
36
43
  'sub',
37
44
  'sup',
45
+ // Underline
38
46
  'u',
47
+ // Other
39
48
  'span'
40
49
  ].join(',')})`;
41
50
  doc.querySelectorAll(unsupportedTagSelector).forEach(unwrap);
@@ -10,16 +10,21 @@ Object.defineProperty(exports, "sanitizeHTML", {
10
10
  });
11
11
  const _sanitizeAnchors = require("./sanitizeAnchors");
12
12
  const _sanitizeSheets = require("./sanitizeSheets");
13
- const stripStyleTags = (doc)=>{
13
+ /**
14
+ * Remove all <style> tags
15
+ */ const stripStyleTags = (doc)=>{
14
16
  doc.querySelectorAll('style').forEach((e)=>{
15
17
  e.remove();
16
18
  });
17
19
  return doc;
18
20
  };
19
- const stripMetaTags = (doc)=>{
21
+ /**
22
+ * Remove all <meta /> tags
23
+ */ const stripMetaTags = (doc)=>{
20
24
  doc.querySelectorAll('meta').forEach((el)=>el.remove());
21
25
  return doc;
22
26
  };
27
+ // Attention: Order is important
23
28
  const transformers = [
24
29
  stripStyleTags,
25
30
  _sanitizeSheets.sanitizeSheets,
@@ -34,17 +39,27 @@ function removeTableWrappers(table) {
34
39
  }
35
40
  }
36
41
  const sanitizeHTML = (html)=>{
42
+ // Parse the HTML string and pipe it through our transformers
37
43
  const doc = transformers.reduce((value, cb)=>cb(value), new DOMParser().parseFromString(html, 'text/html'));
38
44
  const replacers = [
45
+ // remove whitespaces between some tags, as this can lead to unwanted behaviour:
46
+ // - table -> empty table cells
47
+ // - list -> leading whitespaces
39
48
  (innerHtml)=>innerHtml.replace(/<(\/)?(table|thead|tbody|tr|td|th|caption|col|colgroup|ol|ul|li)(.*)>\s+<(\/)?(table|thead|tbody|tr|td|th|caption|col|colgroup|ol|ul|li)/g, '<$1$2$3><$4$5'),
49
+ // remove empty elements before the ending block element tag
40
50
  (innerHtml)=>innerHtml.replace(/(?:<[^>^/]*>)\s*(?:<\/[^>]*>)<\/(div|p|table|thead|tbody|tr|td|th|caption|col|colgroup|ol|ul|li)/g, '</$1'),
51
+ // remove whitespaces before the ending block element tag
41
52
  (innerHTML)=>innerHTML.replace(/\s*<\/(div|p|table|thead|tbody|tr|td|th|caption|col|colgroup|ol|ul|li)/g, '</$1')
42
53
  ];
43
54
  let previous;
44
55
  do {
56
+ // save previous first before doing modifications
45
57
  previous = doc.body.innerHTML;
46
58
  doc.body.innerHTML = replacers.reduce((innerHTML, replacer)=>replacer(innerHTML), doc.body.innerHTML);
47
59
  }while (doc.body.innerHTML !== previous)
60
+ // Removing the div container wrappers from tables
61
+ // The div container including attributes and possible linebreaks inside wil be removed
62
+ // TODO: can be removed with plate >= 20
48
63
  doc.querySelectorAll('table').forEach(removeTableWrappers);
49
64
  return doc.body.innerHTML;
50
65
  };
@@ -1,4 +1,6 @@
1
- "use strict";
1
+ /**
2
+ * Remove empty spreadsheets columns/rows for performance reasons.
3
+ */ "use strict";
2
4
  Object.defineProperty(exports, "__esModule", {
3
5
  value: true
4
6
  });
@@ -9,8 +11,12 @@ Object.defineProperty(exports, "sanitizeSheets", {
9
11
  }
10
12
  });
11
13
  const sanitizeSheets = (doc)=>{
14
+ // Ensure we are inside a spreadsheet i.e. not pasting
15
+ // a table from within the editor
12
16
  const supported = [
17
+ // Google Sheets
13
18
  'google-sheets-html-origin',
19
+ // MS Excel
14
20
  'meta[content="Excel.Sheet"]',
15
21
  'meta[content*="Microsoft Excel"]'
16
22
  ];
@@ -22,17 +28,23 @@ const sanitizeSheets = (doc)=>{
22
28
  };
23
29
  const tables = Array.from(doc.querySelectorAll('table'));
24
30
  for (const table of tables){
31
+ // Remove empty columns first!
25
32
  table.querySelectorAll('tr').forEach((row)=>{
26
33
  isEmptyElement(row) && row.remove();
27
34
  });
28
35
  const rows = Array.from(table.querySelectorAll('tr'));
36
+ // CSS :nth-of-type index starts from 1
29
37
  let colIndex = 1;
38
+ // eslint-disable-next-line -- TODO: explain this disable
30
39
  while(true){
31
40
  const cells = rows.map((row)=>row.querySelector(`th:nth-of-type(${colIndex}), td:nth-of-type(${colIndex})`)).filter((cell)=>!!cell);
41
+ // No more columns
32
42
  if (cells.length === 0) {
33
43
  break;
34
44
  }
35
45
  const isEmpty = cells.every((cell)=>isEmptyElement(cell));
46
+ // Don't increment on deletion because columns will be shifted
47
+ // left anyway. Incrementing may result in skipping
36
48
  if (!isEmpty) {
37
49
  colIndex += 1;
38
50
  continue;
@@ -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)("hquote", 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)("hquote", 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,16 +23,16 @@ describe('normalization', ()=>{
23
23
  });
24
24
  });
25
25
  it('unwraps nested quotes', ()=>{
26
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, "some"), (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", {
26
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some"), /*#__PURE__*/ (0, _testutils.jsx)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("htext", {
27
27
  bold: true,
28
28
  italic: true,
29
29
  underline: true
30
- }, "paragraph"))), (0, _testutils.jsx)("hp", null, "text")));
31
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, "some"), (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", {
30
+ }, "paragraph"))), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "text")));
31
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some"), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("htext", {
32
32
  bold: true,
33
33
  italic: true,
34
34
  underline: true
35
- }, "paragraph")), (0, _testutils.jsx)("hp", null, "text")), (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", null)));
35
+ }, "paragraph")), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "text")), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("htext", null)));
36
36
  (0, _testutils.assertOutput)({
37
37
  input,
38
38
  expected
@@ -40,37 +40,37 @@ describe('normalization', ()=>{
40
40
  });
41
41
  describe('lifts other invalid children', ()=>{
42
42
  it('block void elements', ()=>{
43
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, "this"), (0, _testutils.jsx)("hembed", {
43
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "this"), /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
44
44
  type: "Asset",
45
45
  id: "1"
46
- }), (0, _testutils.jsx)("hp", null, "is"), (0, _testutils.jsx)("hembed", {
46
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "is"), /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
47
47
  type: "Entry",
48
48
  id: "1"
49
- }), (0, _testutils.jsx)("hp", null, "a blockquote"), (0, _testutils.jsx)("hhr", null), (0, _testutils.jsx)("hh1", null, "Heading 1")));
50
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, "this")), (0, _testutils.jsx)("hembed", {
49
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "a blockquote"), /*#__PURE__*/ (0, _testutils.jsx)("hhr", null), /*#__PURE__*/ (0, _testutils.jsx)("hh1", null, "Heading 1")));
50
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "this")), /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
51
51
  type: "Asset",
52
52
  id: "1"
53
- }), (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, "is")), (0, _testutils.jsx)("hembed", {
53
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "is")), /*#__PURE__*/ (0, _testutils.jsx)("hembed", {
54
54
  type: "Entry",
55
55
  id: "1"
56
- }), (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, "a blockquote")), (0, _testutils.jsx)("hhr", null), (0, _testutils.jsx)("hh1", null, "Heading 1"), (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("text", null)));
56
+ }), /*#__PURE__*/ (0, _testutils.jsx)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "a blockquote")), /*#__PURE__*/ (0, _testutils.jsx)("hhr", null), /*#__PURE__*/ (0, _testutils.jsx)("hh1", null, "Heading 1"), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("text", null)));
57
57
  (0, _testutils.assertOutput)({
58
58
  input,
59
59
  expected
60
60
  });
61
61
  });
62
62
  it('handles lists', ()=>{
63
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hquote", 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")));
64
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hquote", 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)("hquote", null, (0, _testutils.jsx)("hp", null, "text")), (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("text", null)));
63
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hquote", 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")));
64
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hquote", 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)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "text")), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("text", null)));
65
65
  (0, _testutils.assertOutput)({
66
66
  input,
67
67
  expected
68
68
  });
69
69
  });
70
70
  it('handles tables', ()=>{
71
- const table = (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"))));
72
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, "some", table, "text")));
73
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, "some")), table, (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, "text")), (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("text", null)));
71
+ const table = /*#__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"))));
72
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some", table, "text")));
73
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "some")), table, /*#__PURE__*/ (0, _testutils.jsx)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "text")), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("text", null)));
74
74
  (0, _testutils.assertOutput)({
75
75
  input,
76
76
  expected
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "Quote", {
8
8
  return Quote;
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 _emotion = require("emotion");
14
14
  function _interop_require_default(obj) {
15
15
  return obj && obj.__esModule ? obj : {
@@ -37,7 +37,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
37
37
  if (cache && cache.has(obj)) {
38
38
  return cache.get(obj);
39
39
  }
40
- var newObj = {};
40
+ var newObj = {
41
+ __proto__: null
42
+ };
41
43
  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
42
44
  for(var key in obj){
43
45
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
@@ -62,7 +64,7 @@ const style = (0, _emotion.css)({
62
64
  fontStyle: 'normal'
63
65
  });
64
66
  function Quote(props) {
65
- return _react.createElement("blockquote", {
67
+ return /*#__PURE__*/ _react.createElement("blockquote", {
66
68
  ...props.attributes,
67
69
  className: style
68
70
  }, props.children);
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "ToolbarQuoteButton", {
8
8
  return ToolbarQuoteButton;
9
9
  }
10
10
  });
11
- const _react = _interop_require_wildcard(require("react"));
11
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
12
12
  const _f36icons = require("@contentful/f36-icons");
13
13
  const _richtexttypes = require("@contentful/rich-text-types");
14
14
  const _ContentfulEditorProvider = require("../../../ContentfulEditorProvider");
@@ -36,7 +36,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
36
36
  if (cache && cache.has(obj)) {
37
37
  return cache.get(obj);
38
38
  }
39
- var newObj = {};
39
+ var newObj = {
40
+ __proto__: null
41
+ };
40
42
  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
41
43
  for(var key in obj){
42
44
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
@@ -62,11 +64,11 @@ function ToolbarQuoteButton(props) {
62
64
  (0, _editor.focus)(editor);
63
65
  }
64
66
  if (!editor) return null;
65
- return _react.createElement(_ToolbarButton.ToolbarButton, {
67
+ return /*#__PURE__*/ _react.createElement(_ToolbarButton.ToolbarButton, {
66
68
  title: "Blockquote",
67
69
  onClick: handleOnClick,
68
70
  testId: "quote-toolbar-button",
69
71
  isDisabled: props.isDisabled,
70
72
  isActive: (0, _editor.isBlockSelected)(editor, _richtexttypes.BLOCKS.QUOTE)
71
- }, _react.createElement(_f36icons.QuoteIcon, null));
73
+ }, /*#__PURE__*/ _react.createElement(_f36icons.QuoteIcon, null));
72
74
  }
@@ -35,6 +35,7 @@ function createQuotePlugin() {
35
35
  },
36
36
  resetNode: [
37
37
  {
38
+ // toggle off blockquote on backspace when it's empty
38
39
  hotkey: 'backspace',
39
40
  types: [
40
41
  _richtexttypes.BLOCKS.QUOTE
@@ -9,15 +9,15 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- toggleQuote: function() {
13
- return toggleQuote;
14
- },
15
12
  onKeyDownToggleQuote: function() {
16
13
  return onKeyDownToggleQuote;
14
+ },
15
+ toggleQuote: function() {
16
+ return toggleQuote;
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 _editor = require("../../helpers/editor");
22
22
  const _internal = require("../../internal");
23
23
  function _interop_require_default(obj) {
@@ -48,7 +48,7 @@ function toggleQuote(editor, logAction) {
48
48
  });
49
49
  }
50
50
  const onKeyDownToggleQuote = (editor, plugin)=>(event)=>{
51
- const { hotkey } = plugin.options;
51
+ const { hotkey } = plugin.options;
52
52
  if (hotkey && (0, _ishotkey.default)(hotkey, event)) {
53
53
  event.preventDefault();
54
54
  toggleQuote(editor, editor.tracking.onShortcutAction);
@@ -13,7 +13,7 @@ const _slate = require("slate");
13
13
  const _queries = require("../../internal/queries");
14
14
  const _transforms = require("../../internal/transforms");
15
15
  const withQuote = (editor)=>{
16
- const { insertFragment } = editor;
16
+ const { insertFragment } = editor;
17
17
  editor.insertFragment = (fragment)=>{
18
18
  const startingNode = fragment.length && fragment[0];
19
19
  const startsWithBlockquote = _slate.Element.isElement(startingNode) && startingNode.type === _richtexttypes.BLOCKS.QUOTE;
@@ -24,13 +24,15 @@ const withQuote = (editor)=>{
24
24
  });
25
25
  const containerIsNotEmpty = containerEntry && (0, _queries.getText)(editor, containerEntry[1]) !== '';
26
26
  if (startsWithBlockquote && containerIsNotEmpty) {
27
- const { selection } = editor;
27
+ const { selection } = editor;
28
28
  const isContentSelected = (selection)=>!!selection && _slate.Point.compare(selection.anchor, selection.focus) !== 0;
29
+ // if something is selected (highlighted) we replace the selection
29
30
  if (isContentSelected(selection)) {
30
31
  (0, _transforms.deleteText)(editor, {
31
32
  at: selection
32
33
  });
33
34
  }
35
+ // get the cursor entry again, it may be different after deletion
34
36
  const containerEntry = (0, _queries.getAboveNode)(editor, {
35
37
  match: {
36
38
  type: _richtexttypes.TEXT_CONTAINERS
@@ -13,6 +13,7 @@ const _plateselect = require("@udecode/plate-select");
13
13
  const createSelectOnBackspacePlugin = ()=>(0, _plateselect.createSelectOnBackspacePlugin)({
14
14
  options: {
15
15
  query: {
16
+ // `createTextPlugin` is taking care of block elements
16
17
  allow: [
17
18
  _richtexttypes.INLINES.EMBEDDED_ENTRY
18
19
  ]
@@ -1,4 +1,4 @@
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
  });
@@ -6,25 +6,25 @@ const _testutils = require("../../../test-utils");
6
6
  describe('normalization', ()=>{
7
7
  describe('Table', ()=>{
8
8
  it('removes empty table nodes', ()=>{
9
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("htable", null));
10
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("text", null)));
9
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("htable", null));
10
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("text", null)));
11
11
  (0, _testutils.assertOutput)({
12
12
  input,
13
13
  expected
14
14
  });
15
15
  });
16
16
  it('moves tables to the root level except nested tables', ()=>{
17
- const table = (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"))));
18
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "hello", table), (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, "quote", table)), (0, _testutils.jsx)("hul", null, (0, _testutils.jsx)("hli", null, (0, _testutils.jsx)("hp", null, "item", table))), (0, _testutils.jsx)("htable", null, (0, _testutils.jsx)("htr", null, (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell with table: ", table)))));
19
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, "hello"), table, (0, _testutils.jsx)("hquote", null, (0, _testutils.jsx)("hp", null, "quote")), table, (0, _testutils.jsx)("hul", null, (0, _testutils.jsx)("hli", null, (0, _testutils.jsx)("hp", null, "item"))), table, (0, _testutils.jsx)("htable", null, (0, _testutils.jsx)("htr", null, (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell with table: "), (0, _testutils.jsx)("hp", null, "Cell 1"), (0, _testutils.jsx)("hp", null, "Cell 2")))), (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", null)));
17
+ const table = /*#__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"))));
18
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "hello", table), /*#__PURE__*/ (0, _testutils.jsx)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "quote", table)), /*#__PURE__*/ (0, _testutils.jsx)("hul", null, /*#__PURE__*/ (0, _testutils.jsx)("hli", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "item", table))), /*#__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 with table: ", table)))));
19
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "hello"), table, /*#__PURE__*/ (0, _testutils.jsx)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "quote")), table, /*#__PURE__*/ (0, _testutils.jsx)("hul", null, /*#__PURE__*/ (0, _testutils.jsx)("hli", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "item"))), table, /*#__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 with table: "), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "Cell 1"), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "Cell 2")))), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("htext", null)));
20
20
  (0, _testutils.assertOutput)({
21
21
  input,
22
22
  expected
23
23
  });
24
24
  });
25
25
  it('removes invalid children', ()=>{
26
- const input = (0, _testutils.jsx)("editor", null, (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)("htd", null, "invalid cell"), "invalid text"), (0, _testutils.jsx)("hp", null));
27
- const expected = (0, _testutils.jsx)("editor", null, (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, (0, _testutils.jsx)("htext", null)));
26
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__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)("htd", null, "invalid cell"), "invalid text"), /*#__PURE__*/ (0, _testutils.jsx)("hp", null));
27
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__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, /*#__PURE__*/ (0, _testutils.jsx)("htext", null)));
28
28
  (0, _testutils.assertOutput)({
29
29
  input,
30
30
  expected
@@ -33,22 +33,22 @@ describe('normalization', ()=>{
33
33
  });
34
34
  describe('Table cell', ()=>{
35
35
  it('converts invalid children to paragraphs', ()=>{
36
- const input = (0, _testutils.jsx)("editor", null, (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)("hquote", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", {
36
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__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)("hquote", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("htext", {
37
37
  bold: true,
38
38
  italic: true,
39
39
  underline: true
40
- }, "quote"), (0, _testutils.jsx)("hinline", {
40
+ }, "quote"), /*#__PURE__*/ (0, _testutils.jsx)("hinline", {
41
41
  type: "Entry",
42
42
  id: "entry-id"
43
- })))))), (0, _testutils.jsx)("hp", null));
44
- const expected = (0, _testutils.jsx)("editor", null, (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, (0, _testutils.jsx)("htext", {
43
+ })))))), /*#__PURE__*/ (0, _testutils.jsx)("hp", null));
44
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__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, /*#__PURE__*/ (0, _testutils.jsx)("htext", {
45
45
  bold: true,
46
46
  italic: true,
47
47
  underline: true
48
- }, "quote"), (0, _testutils.jsx)("hinline", {
48
+ }, "quote"), /*#__PURE__*/ (0, _testutils.jsx)("hinline", {
49
49
  type: "Entry",
50
50
  id: "entry-id"
51
- }), (0, _testutils.jsx)("htext", null))))), (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", null)));
51
+ }), /*#__PURE__*/ (0, _testutils.jsx)("htext", null))))), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("htext", null)));
52
52
  (0, _testutils.assertOutput)({
53
53
  input,
54
54
  expected
@@ -57,32 +57,32 @@ describe('normalization', ()=>{
57
57
  });
58
58
  describe('Table row', ()=>{
59
59
  it('must be wrapped in a table', ()=>{
60
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("htr", null, (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell"))));
61
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("htable", null, (0, _testutils.jsx)("htr", null, (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell")))), (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("text", null)));
60
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("htr", null, /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell"))));
61
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__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")))), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("text", null)));
62
62
  (0, _testutils.assertOutput)({
63
63
  input,
64
64
  expected
65
65
  });
66
66
  });
67
67
  it('removes empty rows', ()=>{
68
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("htr", null));
69
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("text", null)));
68
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("htr", null));
69
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("text", null)));
70
70
  (0, _testutils.assertOutput)({
71
71
  input,
72
72
  expected
73
73
  });
74
74
  });
75
75
  it('wraps invalid children in table cells', ()=>{
76
- const input = (0, _testutils.jsx)("editor", null, (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)("hp", null, "cell 2"))));
77
- const expected = (0, _testutils.jsx)("editor", null, (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, (0, _testutils.jsx)("text", null)));
76
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__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)("hp", null, "cell 2"))));
77
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__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, /*#__PURE__*/ (0, _testutils.jsx)("text", null)));
78
78
  (0, _testutils.assertOutput)({
79
79
  input,
80
80
  expected
81
81
  });
82
82
  });
83
83
  it('ensures all table rows have the same width', ()=>{
84
- const input = (0, _testutils.jsx)("editor", null, (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)("htr", null, (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell 2")), (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell 3")), (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell 4"))), (0, _testutils.jsx)("htr", null, (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell 5")), (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell 6")))));
85
- const expected = (0, _testutils.jsx)("editor", null, (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, (0, _testutils.jsx)("text", null))), (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("text", null)))), (0, _testutils.jsx)("htr", null, (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell 2")), (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell 3")), (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell 4"))), (0, _testutils.jsx)("htr", null, (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell 5")), (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, "cell 6")), (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("text", null))))), (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("text", null)));
84
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__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)("htr", null, /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell 2")), /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell 3")), /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell 4"))), /*#__PURE__*/ (0, _testutils.jsx)("htr", null, /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell 5")), /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell 6")))));
85
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__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, /*#__PURE__*/ (0, _testutils.jsx)("text", null))), /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("text", null)))), /*#__PURE__*/ (0, _testutils.jsx)("htr", null, /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell 2")), /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell 3")), /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell 4"))), /*#__PURE__*/ (0, _testutils.jsx)("htr", null, /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell 5")), /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, "cell 6")), /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("text", null))))), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("text", null)));
86
86
  (0, _testutils.assertOutput)({
87
87
  input,
88
88
  expected
@@ -1,16 +1,16 @@
1
- "use strict";
1
+ /** @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
  const _helpers = require("../helpers");
7
7
  test('insertTableAndFocusFirstCell', ()=>{
8
- const input = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", null), (0, _testutils.jsx)("cursor", null)), (0, _testutils.jsx)("hp", null));
9
- const { editor } = (0, _testutils.createTestEditor)({
8
+ const input = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("htext", null), /*#__PURE__*/ (0, _testutils.jsx)("cursor", null)), /*#__PURE__*/ (0, _testutils.jsx)("hp", null));
9
+ const { editor } = (0, _testutils.createTestEditor)({
10
10
  input
11
11
  });
12
12
  (0, _helpers.insertTableAndFocusFirstCell)(editor);
13
- const expected = (0, _testutils.jsx)("editor", null, (0, _testutils.jsx)("htable", null, (0, _testutils.jsx)("htr", null, (0, _testutils.jsx)("hth", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", null), (0, _testutils.jsx)("cursor", null))), (0, _testutils.jsx)("hth", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", null)))), (0, _testutils.jsx)("htr", null, (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", null))), (0, _testutils.jsx)("htd", null, (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", null))))), (0, _testutils.jsx)("hp", null, (0, _testutils.jsx)("htext", null)));
13
+ const expected = /*#__PURE__*/ (0, _testutils.jsx)("editor", null, /*#__PURE__*/ (0, _testutils.jsx)("htable", null, /*#__PURE__*/ (0, _testutils.jsx)("htr", null, /*#__PURE__*/ (0, _testutils.jsx)("hth", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("htext", null), /*#__PURE__*/ (0, _testutils.jsx)("cursor", null))), /*#__PURE__*/ (0, _testutils.jsx)("hth", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("htext", null)))), /*#__PURE__*/ (0, _testutils.jsx)("htr", null, /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("htext", null))), /*#__PURE__*/ (0, _testutils.jsx)("htd", null, /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("htext", null))))), /*#__PURE__*/ (0, _testutils.jsx)("hp", null, /*#__PURE__*/ (0, _testutils.jsx)("htext", null)));
14
14
  (0, _testutils.assertOutput)({
15
15
  input,
16
16
  expected
@@ -9,18 +9,18 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- addColumnRight: function() {
13
- return addColumnRight;
14
- },
15
12
  addColumnLeft: function() {
16
13
  return addColumnLeft;
14
+ },
15
+ addColumnRight: function() {
16
+ return addColumnRight;
17
17
  }
18
18
  });
19
19
  const _richtexttypes = require("@contentful/rich-text-types");
20
20
  const _platetable = require("@udecode/plate-table");
21
21
  const _queries = require("../../../internal/queries");
22
22
  const _transforms = require("../../../internal/transforms");
23
- const addColumn = (editor, { header }, getNextCellPath)=>{
23
+ const addColumn = (editor, { header }, getNextCellPath)=>{
24
24
  if ((0, _queries.someNode)(editor, {
25
25
  match: {
26
26
  type: _richtexttypes.BLOCKS.TABLE
@@ -49,6 +49,7 @@ const addColumn = (editor, { header }, getNextCellPath)=>{
49
49
  header: header && rowIdx === 0
50
50
  }), {
51
51
  at: newCellPath,
52
+ // Select the first cell of the new column
52
53
  select: rowIdx === 0
53
54
  });
54
55
  });
@@ -9,11 +9,11 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- addRowBelow: function() {
13
- return addRowBelow;
14
- },
15
12
  addRowAbove: function() {
16
13
  return addRowAbove;
14
+ },
15
+ addRowBelow: function() {
16
+ return addRowBelow;
17
17
  }
18
18
  });
19
19
  const _richtexttypes = require("@contentful/rich-text-types");
@@ -39,8 +39,10 @@ const addRow = (editor, getNextRowPath)=>{
39
39
  colCount: currentRowElem.children.length
40
40
  }), {
41
41
  at: nextRowPath,
42
+ // Note: this selects the last cell of the new row
42
43
  select: true
43
44
  });
45
+ // Select the first cell in the current row
44
46
  (0, _transforms.select)(editor, (0, _queries.getStartPoint)(editor, nextRowPath));
45
47
  }
46
48
  }
@@ -52,6 +54,7 @@ const addRowBelow = (editor)=>{
52
54
  };
53
55
  const addRowAbove = (editor)=>{
54
56
  addRow(editor, (currentRowPath)=>{
57
+ // The new row will be in in-place of the old row
55
58
  return currentRowPath;
56
59
  });
57
60
  };