@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,11 +9,11 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- getPastingSource: function() {
13
- return getPastingSource;
14
- },
15
12
  createTrackingPlugin: function() {
16
13
  return createTrackingPlugin;
14
+ },
15
+ getPastingSource: function() {
16
+ return getPastingSource;
17
17
  }
18
18
  });
19
19
  const _utils = require("./utils");
@@ -39,6 +39,7 @@ function getPastingSource(data) {
39
39
  if (doc.querySelector('meta[content*="Microsoft Word"]')) {
40
40
  return 'Microsoft Word';
41
41
  }
42
+ // TODO: MS Word Online doesn't give us specific tags, we might need to have a closer look at its tracking result since we are using generic values to identify it
42
43
  if (doc.querySelector('[style*="Arial_MSFontService"]') && (doc.querySelector('.TextRun') || doc.querySelector('.OutlineElement'))) {
43
44
  return 'Microsoft Word Online';
44
45
  }
@@ -76,7 +77,7 @@ const createTrackingPlugin = (onAction)=>{
76
77
  return {
77
78
  key: 'TrackingPlugin',
78
79
  withOverrides: (editor)=>{
79
- const { insertData } = editor;
80
+ const { insertData } = editor;
80
81
  editor.tracking = trackingActions;
81
82
  editor.insertData = (data)=>{
82
83
  const isCopyAndPaste = data.types.length !== 0;
@@ -8,9 +8,9 @@ Object.defineProperty(exports, "getCharacterCount", {
8
8
  return getCharacterCount;
9
9
  }
10
10
  });
11
- const _contentfulslatejsadapter = _interop_require_wildcard(require("@contentful/contentful-slatejs-adapter"));
11
+ const _contentfulslatejsadapter = /*#__PURE__*/ _interop_require_wildcard(require("@contentful/contentful-slatejs-adapter"));
12
12
  const _richtextplaintextrenderer = require("@contentful/rich-text-plain-text-renderer");
13
- const _Schema = _interop_require_default(require("../../constants/Schema"));
13
+ const _Schema = /*#__PURE__*/ _interop_require_default(require("../../constants/Schema"));
14
14
  function _interop_require_default(obj) {
15
15
  return obj && obj.__esModule ? obj : {
16
16
  default: 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)) {
@@ -57,6 +59,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
57
59
  }
58
60
  function getCharacterCount(editor) {
59
61
  const document = _contentfulslatejsadapter.toContentfulDocument({
62
+ // eslint-disable-next-line -- parameter type is not exported @typescript-eslint/no-explicit-any
60
63
  document: editor.children,
61
64
  schema: _Schema.default
62
65
  });
@@ -14,6 +14,8 @@ const createVoidsPlugin = ()=>({
14
14
  key: 'VoidsPlugin',
15
15
  exitBreak: [
16
16
  {
17
+ // Inserts a new paragraph *before* a void element if it's the very first
18
+ // node on the editor
17
19
  hotkey: 'enter',
18
20
  before: true,
19
21
  query: {
@@ -21,7 +23,10 @@ const createVoidsPlugin = ()=>({
21
23
  }
22
24
  },
23
25
  {
26
+ // Inserts a new paragraph on enter when a void element is focused
24
27
  hotkey: 'enter',
28
+ // exploit the internal use of Array.slice(0, level + 1) by the exitBreak plugin
29
+ // to stay in the parent element
25
30
  level: -2,
26
31
  query: {
27
32
  filter: ([node, path])=>!((0, _editor.isRootLevel)(path) && (0, _queries.isFirstChildPath)(path)) && !!node.isVoid
@@ -18,6 +18,7 @@ const transformVoid = (editor, [node, path])=>{
18
18
  }
19
19
  ]
20
20
  };
21
+ // A workaround because Slate doesn't allow adjusting void nodes children
21
22
  (0, _transforms.removeNodes)(editor, {
22
23
  at: path
23
24
  });
@@ -9,11 +9,11 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- getPlugins: function() {
13
- return getPlugins;
14
- },
15
12
  disableCorePlugins: function() {
16
13
  return disableCorePlugins;
14
+ },
15
+ getPlugins: function() {
16
+ return getPlugins;
17
17
  }
18
18
  });
19
19
  const _plateserializerdocx = require("@udecode/plate-serializer-docx");
@@ -42,11 +42,15 @@ const _TrailingParagraph = require("./TrailingParagraph");
42
42
  const _Voids = require("./Voids");
43
43
  const getPlugins = (sdk, onAction, restrictedMarks)=>[
44
44
  (0, _plateserializerdocx.createDeserializeDocxPlugin)(),
45
+ // Tracking - This should come first so all plugins below will have access to `editor.tracking`
45
46
  (0, _Tracking.createTrackingPlugin)(onAction),
47
+ // Global / Global shortcuts
46
48
  (0, _DragAndDrop.createDragAndDropPlugin)(),
49
+ // Enable command palette plugin only, if at least action type is allowed
47
50
  ...Object.values((0, _useCommands.isCommandPromptPluginEnabled)(sdk)).some(Boolean) ? [
48
51
  (0, _CommandPalette.createCommandPalettePlugin)()
49
52
  ] : [],
53
+ // Block Elements
50
54
  (0, _Paragraph.createParagraphPlugin)(),
51
55
  (0, _List.createListPlugin)(),
52
56
  (0, _Hr.createHrPlugin)(),
@@ -56,20 +60,28 @@ const getPlugins = (sdk, onAction, restrictedMarks)=>[
56
60
  (0, _EmbeddedEntityBlock.createEmbeddedEntryBlockPlugin)(sdk),
57
61
  (0, _EmbeddedEntityBlock.createEmbeddedAssetBlockPlugin)(sdk),
58
62
  (0, _EmbeddedResourceBlock.createEmbeddedResourceBlockPlugin)(sdk),
63
+ // Inline elements
59
64
  (0, _Hyperlink.createHyperlinkPlugin)(sdk),
60
65
  (0, _EmbeddedEntityInline.createEmbeddedEntityInlinePlugin)(sdk),
61
66
  (0, _EmbeddedResourceInline.createEmbeddedResourceInlinePlugin)(sdk),
67
+ // Marks
62
68
  (0, _Marks.createMarksPlugin)(),
69
+ // Other
63
70
  (0, _TrailingParagraph.createTrailingParagraphPlugin)(),
64
71
  (0, _Text.createTextPlugin)(restrictedMarks),
65
72
  (0, _Voids.createVoidsPlugin)(),
66
73
  (0, _SelectOnBackspace.createSelectOnBackspacePlugin)(),
74
+ // Pasting content from other sources
67
75
  (0, _PasteHTML.createPasteHTMLPlugin)(),
76
+ // These plugins drive their configurations from the list of plugins
77
+ // above. They MUST come last.
68
78
  (0, _Break.createSoftBreakPlugin)(),
69
79
  (0, _Break.createExitBreakPlugin)(),
70
80
  (0, _Break.createResetNodePlugin)(),
71
81
  (0, _Normalizer.createNormalizerPlugin)()
72
82
  ];
73
83
  const disableCorePlugins = {
84
+ // Note: Enabled by default since v9.0.0 but it causes Cypress's
85
+ // .click() command to fail
74
86
  eventEditor: true
75
87
  };
@@ -9,14 +9,14 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- styles: function() {
13
- return styles;
14
- },
15
12
  EmbeddedBlockToolbarIcon: function() {
16
13
  return EmbeddedBlockToolbarIcon;
14
+ },
15
+ styles: function() {
16
+ return styles;
17
17
  }
18
18
  });
19
- const _react = _interop_require_wildcard(require("react"));
19
+ const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
20
20
  const _f36components = require("@contentful/f36-components");
21
21
  const _f36icons = require("@contentful/f36-icons");
22
22
  const _richtexttypes = require("@contentful/rich-text-types");
@@ -46,7 +46,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
46
46
  if (cache && cache.has(obj)) {
47
47
  return cache.get(obj);
48
48
  }
49
- var newObj = {};
49
+ var newObj = {
50
+ __proto__: null
51
+ };
50
52
  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
51
53
  for(var key in obj){
52
54
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
@@ -69,7 +71,7 @@ const styles = {
69
71
  marginRight: '10px'
70
72
  })
71
73
  };
72
- function EmbeddedBlockToolbarIcon({ isDisabled , nodeType , onClose }) {
74
+ function EmbeddedBlockToolbarIcon({ isDisabled, nodeType, onClose }) {
73
75
  const editor = (0, _ContentfulEditorProvider.useContentfulEditor)();
74
76
  const sdk = (0, _SdkProvider.useSdkContext)();
75
77
  const handleClick = async (event)=>{
@@ -86,19 +88,19 @@ function EmbeddedBlockToolbarIcon({ isDisabled , nodeType , onClose }) {
86
88
  };
87
89
  const type = getEntityTypeFromNodeType(nodeType);
88
90
  const baseClass = `rich-text__${nodeType}`;
89
- return _react.createElement(_f36components.Menu.Item, {
91
+ return /*#__PURE__*/ _react.createElement(_f36components.Menu.Item, {
90
92
  disabled: isDisabled,
91
93
  className: `${baseClass}-list-item`,
92
94
  onClick: handleClick,
93
95
  testId: `toolbar-toggle-${nodeType}`
94
- }, _react.createElement(_f36components.Flex, {
96
+ }, /*#__PURE__*/ _react.createElement(_f36components.Flex, {
95
97
  alignItems: "center",
96
98
  flexDirection: "row"
97
- }, _react.createElement(_f36components.Icon, {
99
+ }, /*#__PURE__*/ _react.createElement(_f36components.Icon, {
98
100
  as: type === 'Asset' ? _f36icons.AssetIcon : _f36icons.EmbeddedEntryBlockIcon,
99
101
  className: `rich-text__embedded-entry-list-icon ${styles.icon}`,
100
102
  variant: "secondary"
101
- }), _react.createElement("span", null, type, nodeType == _richtexttypes.BLOCKS.EMBEDDED_RESOURCE && _react.createElement(_ResourceNewBadge.ResourceNewBadge, null))));
103
+ }), /*#__PURE__*/ _react.createElement("span", null, type, nodeType == _richtexttypes.BLOCKS.EMBEDDED_RESOURCE && /*#__PURE__*/ _react.createElement(_ResourceNewBadge.ResourceNewBadge, null))));
102
104
  }
103
105
  function getEntityTypeFromNodeType(nodeType) {
104
106
  const words = nodeType.toLowerCase().split('-');
@@ -20,7 +20,7 @@ _export(exports, {
20
20
  }
21
21
  });
22
22
  const _richtexttypes = require("@contentful/rich-text-types");
23
- const _ishotkey = _interop_require_default(require("is-hotkey"));
23
+ const _ishotkey = /*#__PURE__*/ _interop_require_default(require("is-hotkey"));
24
24
  const _config = require("../../helpers/config");
25
25
  const _editor = require("../../helpers/editor");
26
26
  const _sdkNavigatorSlideIn = require("../../helpers/sdkNavigatorSlideIn");
@@ -31,7 +31,7 @@ function _interop_require_default(obj) {
31
31
  };
32
32
  }
33
33
  function getWithEmbeddedBlockEvents(nodeType, sdk) {
34
- return (editor, { options: { hotkey } })=>(event)=>{
34
+ return (editor, { options: { hotkey } })=>(event)=>{
35
35
  const [, pathToSelectedElement] = (0, _editor.getNodeEntryFromSelection)(editor, nodeType);
36
36
  if (pathToSelectedElement) {
37
37
  const isDelete = event.key === 'Delete';
@@ -57,14 +57,14 @@ async function selectEntityAndInsert(nodeType, sdk, editor, logAction) {
57
57
  logAction('openCreateEmbedDialog', {
58
58
  nodeType
59
59
  });
60
- const { field , dialogs } = sdk;
60
+ const { field, dialogs } = sdk;
61
61
  const baseConfig = (0, _config.newEntitySelectorConfigFromRichTextField)(field, nodeType);
62
62
  const selectEntity = baseConfig.entityType === 'Asset' ? dialogs.selectSingleAsset : dialogs.selectSingleEntry;
63
63
  const config = {
64
64
  ...baseConfig,
65
65
  withCreate: true
66
66
  };
67
- const { selection } = editor;
67
+ const { selection } = editor;
68
68
  const rteSlide = (0, _sdkNavigatorSlideIn.watchCurrentSlide)(sdk.navigator);
69
69
  const entity = await selectEntity(config);
70
70
  if (!entity) {
@@ -72,6 +72,8 @@ async function selectEntityAndInsert(nodeType, sdk, editor, logAction) {
72
72
  nodeType
73
73
  });
74
74
  } else {
75
+ // Selection prevents incorrect position of inserted ref when RTE doesn't have focus
76
+ // (i.e. when using hotkeys and slide-in)
75
77
  (0, _internal.select)(editor, selection);
76
78
  insertBlock(editor, nodeType, entity);
77
79
  ensureFollowingParagraph(editor, [
@@ -82,6 +84,8 @@ async function selectEntityAndInsert(nodeType, sdk, editor, logAction) {
82
84
  nodeType
83
85
  });
84
86
  }
87
+ // If user chose to create a new entity, this might open slide-in to edit the
88
+ // entity. In this case, no point in focusing RTE which is now in the slide below.
85
89
  rteSlide.onActive(()=>{
86
90
  rteSlide.unwatch();
87
91
  (0, _editor.focus)(editor);
@@ -91,15 +95,17 @@ async function selectResourceEntityAndInsert(sdk, editor, logAction) {
91
95
  logAction('openCreateEmbedDialog', {
92
96
  nodeType: _richtexttypes.BLOCKS.EMBEDDED_RESOURCE
93
97
  });
94
- const { field , dialogs } = sdk;
98
+ const { field, dialogs } = sdk;
95
99
  const config = (0, _config.newResourceEntitySelectorConfigFromRichTextField)(field, _richtexttypes.BLOCKS.EMBEDDED_RESOURCE);
96
- const { selection } = editor;
100
+ const { selection } = editor;
97
101
  const entity = await dialogs.selectSingleResourceEntry(config);
98
102
  if (!entity) {
99
103
  logAction('cancelCreateEmbedDialog', {
100
104
  nodeType: _richtexttypes.BLOCKS.EMBEDDED_RESOURCE
101
105
  });
102
106
  } else {
107
+ // Selection prevents incorrect position of inserted ref when RTE doesn't have focus
108
+ // (i.e. when using hotkeys and slide-in)
103
109
  (0, _internal.select)(editor, selection);
104
110
  insertBlock(editor, _richtexttypes.BLOCKS.EMBEDDED_RESOURCE, entity);
105
111
  ensureFollowingParagraph(editor, [
@@ -110,6 +116,7 @@ async function selectResourceEntityAndInsert(sdk, editor, logAction) {
110
116
  });
111
117
  }
112
118
  }
119
+ // TODO: incorporate this logic inside the trailingParagraph plugin instead
113
120
  function ensureFollowingParagraph(editor, nodeTypes) {
114
121
  const entityBlock = (0, _internal.getAboveNode)(editor, {
115
122
  match: {
@@ -122,6 +129,8 @@ function ensureFollowingParagraph(editor, nodeTypes) {
122
129
  const level = entityBlock[1].length - 1;
123
130
  const lastNode = (0, _internal.getLastNodeByLevel)(editor, level);
124
131
  const isTextContainer = _richtexttypes.TEXT_CONTAINERS.includes(lastNode?.[0].type ?? '');
132
+ // If the new block isn't followed by a sibling text container (e.g. paragraph)
133
+ // we insert a new empty one. Level 0 is handled by the trailingParagraph plugin
125
134
  if (level !== 0 && !isTextContainer) {
126
135
  (0, _editor.insertEmptyParagraph)(editor);
127
136
  }
@@ -157,6 +166,7 @@ const createNode = (nodeType, entity)=>{
157
166
  isVoid: true
158
167
  };
159
168
  };
169
+ // TODO: DRY up copied code from HR
160
170
  function insertBlock(editor, nodeType, entity) {
161
171
  if (!editor?.selection) return;
162
172
  const linkedEntityBlock = createNode(nodeType, entity);
@@ -8,10 +8,10 @@ Object.defineProperty(exports, "EmbeddedInlineToolbarIcon", {
8
8
  return EmbeddedInlineToolbarIcon;
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
13
  const _f36icons = require("@contentful/f36-icons");
14
- const _f36tokens = _interop_require_default(require("@contentful/f36-tokens"));
14
+ const _f36tokens = /*#__PURE__*/ _interop_require_default(require("@contentful/f36-tokens"));
15
15
  const _richtexttypes = require("@contentful/rich-text-types");
16
16
  const _emotion = require("emotion");
17
17
  const _ContentfulEditorProvider = require("../../ContentfulEditorProvider");
@@ -45,7 +45,9 @@ function _interop_require_wildcard(obj, nodeInterop) {
45
45
  if (cache && cache.has(obj)) {
46
46
  return cache.get(obj);
47
47
  }
48
- var newObj = {};
48
+ var newObj = {
49
+ __proto__: null
50
+ };
49
51
  var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
50
52
  for(var key in obj){
51
53
  if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
@@ -76,7 +78,7 @@ const styles = {
76
78
  }
77
79
  })
78
80
  };
79
- function EmbeddedInlineToolbarIcon({ onClose , nodeType , isDisabled }) {
81
+ function EmbeddedInlineToolbarIcon({ onClose, nodeType, isDisabled }) {
80
82
  const editor = (0, _ContentfulEditorProvider.useContentfulEditor)();
81
83
  const sdk = (0, _SdkProvider.useSdkContext)();
82
84
  async function handleClick(event) {
@@ -90,16 +92,16 @@ function EmbeddedInlineToolbarIcon({ onClose , nodeType , isDisabled }) {
90
92
  }
91
93
  (0, _editor.moveToTheNextChar)(editor);
92
94
  }
93
- return _react.createElement(_f36components.Menu.Item, {
95
+ return /*#__PURE__*/ _react.createElement(_f36components.Menu.Item, {
94
96
  disabled: isDisabled,
95
97
  className: "rich-text__entry-link-block-button",
96
98
  testId: `toolbar-toggle-${nodeType}`,
97
99
  onClick: handleClick
98
- }, _react.createElement(_f36components.Flex, {
100
+ }, /*#__PURE__*/ _react.createElement(_f36components.Flex, {
99
101
  alignItems: "center",
100
102
  flexDirection: "row"
101
- }, _react.createElement(_f36icons.EmbeddedEntryInlineIcon, {
103
+ }, /*#__PURE__*/ _react.createElement(_f36icons.EmbeddedEntryInlineIcon, {
102
104
  variant: "secondary",
103
105
  className: `rich-text__embedded-entry-list-icon ${styles.icon}`
104
- }), _react.createElement("span", null, "Inline entry", nodeType == _richtexttypes.INLINES.EMBEDDED_RESOURCE && _react.createElement(_ResourceNewBadge.ResourceNewBadge, null))));
106
+ }), /*#__PURE__*/ _react.createElement("span", null, "Inline entry", nodeType == _richtexttypes.INLINES.EMBEDDED_RESOURCE && /*#__PURE__*/ _react.createElement(_ResourceNewBadge.ResourceNewBadge, null))));
105
107
  }
@@ -20,7 +20,7 @@ _export(exports, {
20
20
  }
21
21
  });
22
22
  const _richtexttypes = require("@contentful/rich-text-types");
23
- const _ishotkey = _interop_require_default(require("is-hotkey"));
23
+ const _ishotkey = /*#__PURE__*/ _interop_require_default(require("is-hotkey"));
24
24
  const _config = require("../../helpers/config");
25
25
  const _editor = require("../../helpers/editor");
26
26
  const _sdkNavigatorSlideIn = require("../../helpers/sdkNavigatorSlideIn");
@@ -31,7 +31,7 @@ function _interop_require_default(obj) {
31
31
  };
32
32
  }
33
33
  function getWithEmbeddedEntryInlineEvents(nodeType, sdk) {
34
- return function withEmbeddedEntryInlineEvents(editor, { options: { hotkey } }) {
34
+ return function withEmbeddedEntryInlineEvents(editor, { options: { hotkey } }) {
35
35
  return function handleEvent(event) {
36
36
  if (!editor) return;
37
37
  if (hotkey && (0, _ishotkey.default)(hotkey, event)) {
@@ -82,7 +82,7 @@ async function selectEntityAndInsert(editor, sdk, logAction) {
82
82
  ...(0, _config.newEntitySelectorConfigFromRichTextField)(sdk.field, nodeType),
83
83
  withCreate: true
84
84
  };
85
- const { selection } = editor;
85
+ const { selection } = editor;
86
86
  const rteSlide = (0, _sdkNavigatorSlideIn.watchCurrentSlide)(sdk.navigator);
87
87
  const entry = await sdk.dialogs.selectSingleEntry(config);
88
88
  if (!entry) {
@@ -90,6 +90,8 @@ async function selectEntityAndInsert(editor, sdk, logAction) {
90
90
  nodeType
91
91
  });
92
92
  } else {
93
+ // Selection prevents incorrect position of inserted ref when RTE doesn't have focus
94
+ // (i.e. when using hotkeys and slide-in)
93
95
  (0, _transforms.select)(editor, selection);
94
96
  (0, _transforms.insertNodes)(editor, createInlineEntryNode(nodeType, entry));
95
97
  logAction('insert', {
@@ -106,18 +108,20 @@ async function selectResourceEntityAndInsert(editor, sdk, logAction) {
106
108
  logAction('openCreateEmbedDialog', {
107
109
  nodeType
108
110
  });
109
- const { dialogs , field } = sdk;
111
+ const { dialogs, field } = sdk;
110
112
  const config = {
111
113
  ...(0, _config.newResourceEntitySelectorConfigFromRichTextField)(field, nodeType),
112
114
  withCreate: true
113
115
  };
114
- const { selection } = editor;
116
+ const { selection } = editor;
115
117
  const entry = await dialogs.selectSingleResourceEntry(config);
116
118
  if (!entry) {
117
119
  logAction('cancelCreateEmbedDialog', {
118
120
  nodeType
119
121
  });
120
122
  } else {
123
+ // Selection prevents incorrect position of inserted ref when RTE doesn't have focus
124
+ // (i.e. when using hotkeys and slide-in)
121
125
  (0, _transforms.select)(editor, selection);
122
126
  (0, _transforms.insertNodes)(editor, createInlineEntryNode(nodeType, entry));
123
127
  logAction('insert', {
@@ -8,10 +8,10 @@ Object.defineProperty(exports, "FetchingWrappedAssetCard", {
8
8
  return FetchingWrappedAssetCard;
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
13
  const _fieldeditorreference = require("@contentful/field-editor-reference");
14
- const _fastdeepequal = _interop_require_default(require("fast-deep-equal"));
14
+ const _fastdeepequal = /*#__PURE__*/ _interop_require_default(require("fast-deep-equal"));
15
15
  function _interop_require_default(obj) {
16
16
  return obj && obj.__esModule ? obj : {
17
17
  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)) {
@@ -56,21 +58,21 @@ function _interop_require_wildcard(obj, nodeInterop) {
56
58
  }
57
59
  return newObj;
58
60
  }
59
- const InternalAssetCard = _react.memo((props)=>{
61
+ const InternalAssetCard = /*#__PURE__*/ _react.memo((props)=>{
60
62
  if (props.asset === undefined) {
61
- return _react.createElement(_f36components.AssetCard, {
63
+ return /*#__PURE__*/ _react.createElement(_f36components.AssetCard, {
62
64
  size: "default",
63
65
  isLoading: true
64
66
  });
65
67
  }
66
68
  if (props.asset === 'failed') {
67
- return _react.createElement(_fieldeditorreference.MissingEntityCard, {
69
+ return /*#__PURE__*/ _react.createElement(_fieldeditorreference.MissingEntityCard, {
68
70
  entityType: "Asset",
69
71
  isDisabled: props.isDisabled,
70
72
  onRemove: props.onRemove
71
73
  });
72
74
  }
73
- return _react.createElement(_fieldeditorreference.WrappedAssetCard, {
75
+ return /*#__PURE__*/ _react.createElement(_fieldeditorreference.WrappedAssetCard, {
74
76
  getEntityScheduledActions: props.loadEntityScheduledActions,
75
77
  size: "small",
76
78
  isSelected: props.isSelected,
@@ -85,9 +87,9 @@ const InternalAssetCard = _react.memo((props)=>{
85
87
  }, _fastdeepequal.default);
86
88
  InternalAssetCard.displayName = 'InternalAssetCard';
87
89
  function FetchingWrappedAssetCard(props) {
88
- const { onEntityFetchComplete } = props;
89
- const { data: asset , status } = (0, _fieldeditorreference.useEntity)('Asset', props.assetId);
90
- const { getEntityScheduledActions } = (0, _fieldeditorreference.useEntityLoader)();
90
+ const { onEntityFetchComplete } = props;
91
+ const { data: asset, status } = (0, _fieldeditorreference.useEntity)('Asset', props.assetId);
92
+ const { getEntityScheduledActions } = (0, _fieldeditorreference.useEntityLoader)();
91
93
  const loadEntityScheduledActions = _react.useCallback(()=>getEntityScheduledActions('Asset', props.assetId), [
92
94
  getEntityScheduledActions,
93
95
  props.assetId
@@ -100,7 +102,7 @@ function FetchingWrappedAssetCard(props) {
100
102
  onEntityFetchComplete,
101
103
  status
102
104
  ]);
103
- return _react.createElement(InternalAssetCard, {
105
+ return /*#__PURE__*/ _react.createElement(InternalAssetCard, {
104
106
  asset: asset,
105
107
  sdk: props.sdk,
106
108
  isDisabled: props.isDisabled,
@@ -8,10 +8,10 @@ Object.defineProperty(exports, "FetchingWrappedEntryCard", {
8
8
  return FetchingWrappedEntryCard;
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
13
  const _fieldeditorreference = require("@contentful/field-editor-reference");
14
- const _fastdeepequal = _interop_require_default(require("fast-deep-equal"));
14
+ const _fastdeepequal = /*#__PURE__*/ _interop_require_default(require("fast-deep-equal"));
15
15
  function _interop_require_default(obj) {
16
16
  return obj && obj.__esModule ? obj : {
17
17
  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)) {
@@ -56,22 +58,22 @@ function _interop_require_wildcard(obj, nodeInterop) {
56
58
  }
57
59
  return newObj;
58
60
  }
59
- const InternalEntryCard = _react.memo((props)=>{
60
- const { entry , sdk , loadEntityScheduledActions } = props;
61
+ const InternalEntryCard = /*#__PURE__*/ _react.memo((props)=>{
62
+ const { entry, sdk, loadEntityScheduledActions } = props;
61
63
  if (entry === undefined) {
62
- return _react.createElement(_f36components.EntryCard, {
64
+ return /*#__PURE__*/ _react.createElement(_f36components.EntryCard, {
63
65
  isLoading: true
64
66
  });
65
67
  }
66
68
  if (entry === 'failed') {
67
- return _react.createElement(_fieldeditorreference.MissingEntityCard, {
69
+ return /*#__PURE__*/ _react.createElement(_fieldeditorreference.MissingEntityCard, {
68
70
  entityType: "Entry",
69
71
  isDisabled: props.isDisabled,
70
72
  onRemove: props.onRemove
71
73
  });
72
74
  }
73
75
  const contentType = sdk.space.getCachedContentTypes().find((contentType)=>contentType.sys.id === entry.sys.contentType.sys.id);
74
- return _react.createElement(_fieldeditorreference.WrappedEntryCard, {
76
+ return /*#__PURE__*/ _react.createElement(_fieldeditorreference.WrappedEntryCard, {
75
77
  size: "default",
76
78
  getAsset: props.sdk.space.getAsset,
77
79
  getEntityScheduledActions: loadEntityScheduledActions,
@@ -88,9 +90,9 @@ const InternalEntryCard = _react.memo((props)=>{
88
90
  }, _fastdeepequal.default);
89
91
  InternalEntryCard.displayName = 'ReferenceCard';
90
92
  const FetchingWrappedEntryCard = (props)=>{
91
- const { entryId , onEntityFetchComplete } = props;
92
- const { data: entry , status } = (0, _fieldeditorreference.useEntity)('Entry', entryId);
93
- const { getEntityScheduledActions } = (0, _fieldeditorreference.useEntityLoader)();
93
+ const { entryId, onEntityFetchComplete } = props;
94
+ const { data: entry, status } = (0, _fieldeditorreference.useEntity)('Entry', entryId);
95
+ const { getEntityScheduledActions } = (0, _fieldeditorreference.useEntityLoader)();
94
96
  const loadEntityScheduledActions = _react.useCallback(()=>getEntityScheduledActions('Entry', entryId), [
95
97
  getEntityScheduledActions,
96
98
  entryId
@@ -103,7 +105,7 @@ const FetchingWrappedEntryCard = (props)=>{
103
105
  onEntityFetchComplete,
104
106
  status
105
107
  ]);
106
- return _react.createElement(InternalEntryCard, {
108
+ return /*#__PURE__*/ _react.createElement(InternalEntryCard, {
107
109
  entry: entry,
108
110
  sdk: props.sdk,
109
111
  locale: props.locale,
@@ -8,10 +8,10 @@ Object.defineProperty(exports, "FetchingWrappedResourceCard", {
8
8
  return FetchingWrappedResourceCard;
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
13
  const _fieldeditorreference = require("@contentful/field-editor-reference");
14
- const _fastdeepequal = _interop_require_default(require("fast-deep-equal"));
14
+ const _fastdeepequal = /*#__PURE__*/ _interop_require_default(require("fast-deep-equal"));
15
15
  function _interop_require_default(obj) {
16
16
  return obj && obj.__esModule ? obj : {
17
17
  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)) {
@@ -56,14 +58,14 @@ function _interop_require_wildcard(obj, nodeInterop) {
56
58
  }
57
59
  return newObj;
58
60
  }
59
- const InternalEntryCard = _react.memo((props)=>{
61
+ const InternalEntryCard = /*#__PURE__*/ _react.memo((props)=>{
60
62
  if (props.data === undefined || props.status === 'loading') {
61
- return _react.createElement(_f36components.EntryCard, {
63
+ return /*#__PURE__*/ _react.createElement(_f36components.EntryCard, {
62
64
  isLoading: true
63
65
  });
64
66
  }
65
- const { contentType , resource: entry , space } = props.data;
66
- return _react.createElement(_fieldeditorreference.WrappedEntryCard, {
67
+ const { contentType, resource: entry, space } = props.data;
68
+ return /*#__PURE__*/ _react.createElement(_fieldeditorreference.WrappedEntryCard, {
67
69
  size: "default",
68
70
  getAsset: ()=>Promise.resolve(),
69
71
  isSelected: props.isSelected,
@@ -81,8 +83,8 @@ const InternalEntryCard = _react.memo((props)=>{
81
83
  }, _fastdeepequal.default);
82
84
  InternalEntryCard.displayName = 'ReferenceCard';
83
85
  const FetchingWrappedResourceCard = (props)=>{
84
- const { link , onEntityFetchComplete } = props;
85
- const { data , status , error } = (0, _fieldeditorreference.useResource)(link.linkType, link.urn);
86
+ const { link, onEntityFetchComplete } = props;
87
+ const { data, status, error } = (0, _fieldeditorreference.useResource)(link.linkType, link.urn);
86
88
  _react.useEffect(()=>{
87
89
  if (status === 'success') {
88
90
  onEntityFetchComplete?.();
@@ -92,7 +94,7 @@ const FetchingWrappedResourceCard = (props)=>{
92
94
  status
93
95
  ]);
94
96
  if (status === 'error') {
95
- return _react.createElement(_fieldeditorreference.ResourceEntityErrorCard, {
97
+ return /*#__PURE__*/ _react.createElement(_fieldeditorreference.ResourceEntityErrorCard, {
96
98
  error: error,
97
99
  linkType: link.linkType,
98
100
  isSelected: props.isSelected,
@@ -100,7 +102,8 @@ const FetchingWrappedResourceCard = (props)=>{
100
102
  onRemove: props.onRemove
101
103
  });
102
104
  }
103
- return _react.createElement(InternalEntryCard, {
105
+ return /*#__PURE__*/ _react.createElement(InternalEntryCard, {
106
+ // entry is the only currently supported entity but TypeScript is not aware
104
107
  data: data,
105
108
  status: status,
106
109
  sdk: props.sdk,