@atlaskit/editor-core 166.0.2 → 167.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. package/.eslintrc.js +46 -1
  2. package/CHANGELOG.md +99 -0
  3. package/dist/cjs/actions/index.js +26 -2
  4. package/dist/cjs/create-editor/ReactEditorView.js +2 -0
  5. package/dist/cjs/create-editor/create-plugins-list.js +1 -2
  6. package/dist/cjs/editor.js +5 -2
  7. package/dist/cjs/keymaps/index.js +5 -1
  8. package/dist/cjs/labs/next/ContentComponents.js +8 -4
  9. package/dist/cjs/labs/next/full-page.js +14 -8
  10. package/dist/cjs/nodeviews/getInlineNodeViewProducer.js +7 -3
  11. package/dist/cjs/nodeviews/getInlineNodeViewProducer.styles.js +3 -1
  12. package/dist/cjs/plugins/alignment/ui/ToolbarAlignment/styles.js +3 -1
  13. package/dist/cjs/plugins/analytics/types/enums.js +3 -0
  14. package/dist/cjs/plugins/annotation/pm-plugins/inline-comment.js +2 -2
  15. package/dist/cjs/plugins/annotation/pm-plugins/plugin-factory.js +0 -1
  16. package/dist/cjs/plugins/base/index.js +8 -17
  17. package/dist/cjs/plugins/base/pm-plugins/better-type-history.js +3 -12
  18. package/dist/cjs/plugins/base/pm-plugins/inline-cursor-target.js +71 -16
  19. package/dist/cjs/plugins/block-type/commands/block-type.js +32 -22
  20. package/dist/cjs/plugins/block-type/ui/ToolbarBlockType/styled.js +4 -2
  21. package/dist/cjs/plugins/breakout/ui/LayoutButton.js +4 -11
  22. package/dist/cjs/plugins/card/styles.js +1 -1
  23. package/dist/cjs/plugins/card/ui/LinkToolbarIconDropdown.js +2 -2
  24. package/dist/cjs/plugins/code-block/actions.js +36 -2
  25. package/dist/cjs/plugins/code-block/nodeviews/code-block.js +70 -1
  26. package/dist/cjs/plugins/code-block/pm-plugins/actions.js +2 -1
  27. package/dist/cjs/plugins/code-block/pm-plugins/main.js +46 -8
  28. package/dist/cjs/plugins/code-block/styles.js +28 -24
  29. package/dist/cjs/plugins/collab-edit/index.js +2 -2
  30. package/dist/cjs/plugins/collab-edit/provider/channel.js +2 -2
  31. package/dist/cjs/plugins/collab-edit/styles.js +4 -2
  32. package/dist/cjs/plugins/collab-edit/ui/styles.js +4 -2
  33. package/dist/cjs/plugins/collab-edit/utils.js +1 -0
  34. package/dist/cjs/plugins/date/ui/DatePicker/index.js +3 -1
  35. package/dist/cjs/plugins/expand/ui/styles.js +16 -14
  36. package/dist/cjs/plugins/extension/commands.js +3 -2
  37. package/dist/cjs/plugins/extension/context-panel.js +23 -9
  38. package/dist/cjs/plugins/extension/plugin-factory.js +1 -4
  39. package/dist/cjs/plugins/extension/pm-plugins/main.js +13 -36
  40. package/dist/cjs/plugins/extension/ui/Extension/Extension/styles.js +6 -4
  41. package/dist/cjs/plugins/extension/ui/Extension/InlineExtension/styles.js +3 -1
  42. package/dist/cjs/plugins/extension/ui/Extension/styles.js +7 -5
  43. package/dist/cjs/plugins/extension/ui/SaveIndicator/SaveIndicator.js +4 -2
  44. package/dist/cjs/plugins/extension/utils.js +12 -57
  45. package/dist/cjs/plugins/fake-text-cursor/styles.js +3 -1
  46. package/dist/cjs/plugins/feature-flags-context/feature-flags-from-props.js +3 -2
  47. package/dist/cjs/plugins/feedback-dialog/index.js +0 -1
  48. package/dist/cjs/plugins/find-replace/styles.js +2 -6
  49. package/dist/cjs/plugins/find-replace/ui/styles.js +4 -2
  50. package/dist/cjs/plugins/find-replace/utils/batch-decorations.js +0 -1
  51. package/dist/cjs/plugins/floating-toolbar/ui/DropdownMenu.js +3 -1
  52. package/dist/cjs/plugins/floating-toolbar/ui/EditorEmojiAddIcon.js +3 -1
  53. package/dist/cjs/plugins/floating-toolbar/ui/ExtensionsPlaceholder.js +2 -2
  54. package/dist/cjs/plugins/floating-toolbar/ui/Separator.js +3 -1
  55. package/dist/cjs/plugins/floating-toolbar/ui/Toolbar.js +6 -4
  56. package/dist/cjs/plugins/floating-toolbar/ui/styles.js +12 -10
  57. package/dist/cjs/plugins/grid/styles.js +3 -1
  58. package/dist/cjs/plugins/help-dialog/ui/styles.js +9 -7
  59. package/dist/cjs/plugins/hyperlink/pm-plugins/input-rule.js +23 -1
  60. package/dist/cjs/plugins/hyperlink/pm-plugins/keymap.js +10 -1
  61. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +7 -5
  62. package/dist/cjs/plugins/hyperlink/utils.js +53 -2
  63. package/dist/cjs/plugins/jira-issue/nodeviews/jira-issue.js +4 -2
  64. package/dist/cjs/plugins/layout/styles.js +1 -1
  65. package/dist/cjs/plugins/macro/actions.js +2 -2
  66. package/dist/cjs/plugins/media/commands/helpers.js +10 -9
  67. package/dist/cjs/plugins/media/nodeviews/mediaInline.js +25 -6
  68. package/dist/cjs/plugins/media/nodeviews/mediaNodeView/media.js +6 -0
  69. package/dist/cjs/plugins/media/nodeviews/mediaSingle.js +2 -2
  70. package/dist/cjs/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +5 -3
  71. package/dist/cjs/plugins/media/pm-plugins/main.js +1 -0
  72. package/dist/cjs/plugins/media/styles.js +1 -1
  73. package/dist/cjs/plugins/media/ui/CaptionPlaceholder/index.js +3 -1
  74. package/dist/cjs/plugins/media/ui/Media/DropPlaceholder.js +4 -2
  75. package/dist/cjs/plugins/media/ui/MediaLinkingToolbar.js +3 -1
  76. package/dist/cjs/plugins/media/ui/ResizableMediaSingle/index.js +2 -2
  77. package/dist/cjs/plugins/mentions/styles.js +3 -1
  78. package/dist/cjs/plugins/mentions/ui/InviteItem/index.js +3 -1
  79. package/dist/cjs/plugins/mentions/ui/InviteItem/styles.js +4 -2
  80. package/dist/cjs/plugins/panel/index.js +1 -0
  81. package/dist/cjs/plugins/panel/nodeviews/panel.js +4 -1
  82. package/dist/cjs/plugins/panel/pm-plugins/keymaps.js +21 -3
  83. package/dist/cjs/plugins/paste/handlers.js +44 -6
  84. package/dist/cjs/plugins/paste/linkify-md-plugin.js +7 -0
  85. package/dist/cjs/plugins/paste/pm-plugins/analytics.js +9 -1
  86. package/dist/cjs/plugins/paste/pm-plugins/main.js +27 -1
  87. package/dist/cjs/plugins/placeholder/index.js +15 -3
  88. package/dist/cjs/plugins/placeholder/styles.js +3 -1
  89. package/dist/cjs/plugins/placeholder-text/styles.js +3 -1
  90. package/dist/cjs/plugins/selection/gap-cursor/styles.js +1 -1
  91. package/dist/cjs/plugins/selection/pm-plugins/gap-cursor-main.js +2 -2
  92. package/dist/cjs/plugins/status/ui/statusPicker.js +3 -3
  93. package/dist/cjs/plugins/table/index.js +14 -4
  94. package/dist/cjs/plugins/table/nodeviews/TableComponent.js +6 -6
  95. package/dist/cjs/plugins/table/nodeviews/table.js +9 -4
  96. package/dist/cjs/plugins/table/pm-plugins/main.js +1 -4
  97. package/dist/cjs/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +118 -0
  98. package/dist/cjs/plugins/table/pm-plugins/table-resizing/event-handlers.js +2 -4
  99. package/dist/cjs/plugins/table/pm-plugins/table-resizing/plugin.js +2 -5
  100. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/misc.js +4 -8
  101. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -3
  102. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +0 -3
  103. package/dist/cjs/plugins/table/transforms/column-width.js +1 -2
  104. package/dist/cjs/plugins/table/transforms/fix-tables.js +1 -3
  105. package/dist/cjs/plugins/table/ui/FloatingContextualButton/styles.js +4 -1
  106. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/styles.js +3 -1
  107. package/dist/cjs/plugins/table/ui/common-styles.js +4 -2
  108. package/dist/cjs/plugins/table/ui/consts.js +14 -11
  109. package/dist/cjs/plugins/table/ui/ui-styles.js +17 -10
  110. package/dist/cjs/plugins/table/utils/decoration.js +3 -4
  111. package/dist/cjs/plugins/table/utils/paste.js +9 -9
  112. package/dist/cjs/plugins/type-ahead/index.js +4 -3
  113. package/dist/cjs/plugins/type-ahead/pm-plugins/decorations.js +3 -1
  114. package/dist/cjs/plugins/type-ahead/ui/TypeAheadList.js +4 -4
  115. package/dist/cjs/plugins/type-ahead/ui/TypeAheadListItem.js +11 -9
  116. package/dist/cjs/plugins/type-ahead/ui/TypeAheadPopup.js +73 -3
  117. package/dist/cjs/plugins/unsupported-content/styles.js +1 -1
  118. package/dist/cjs/ui/Addon/Dropdown/styles.js +3 -1
  119. package/dist/cjs/ui/Addon/DropdownItem/styles.js +3 -1
  120. package/dist/cjs/ui/Appearance/Chromeless.js +2 -1
  121. package/dist/cjs/ui/Appearance/Comment/Comment.js +10 -3
  122. package/dist/cjs/ui/Appearance/Comment/Toolbar.js +4 -2
  123. package/dist/cjs/ui/Appearance/FullPage/FullPage.js +5 -2
  124. package/dist/cjs/ui/Appearance/FullPage/FullPageContentArea.js +2 -1
  125. package/dist/cjs/ui/Appearance/FullPage/FullPageToolbar.js +12 -11
  126. package/dist/cjs/ui/Appearance/FullPage/MainToolbar.js +6 -3
  127. package/dist/cjs/ui/ChromeCollapsed/styles.js +1 -1
  128. package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +23 -16
  129. package/dist/cjs/ui/ConfigPanel/ConfigPanelFieldsLoader.js +2 -0
  130. package/dist/cjs/ui/ConfigPanel/Fields/CheckboxGroup.js +3 -1
  131. package/dist/cjs/ui/ConfigPanel/Fields/CustomSelect.js +2 -2
  132. package/dist/cjs/ui/ConfigPanel/Fields/Expand.js +3 -1
  133. package/dist/cjs/ui/ConfigPanel/Fields/Fieldset.js +3 -1
  134. package/dist/cjs/ui/ConfigPanel/Fields/UserSelect.js +2 -2
  135. package/dist/cjs/ui/ConfigPanel/Fields/common/RequiredIndicator.js +3 -1
  136. package/dist/cjs/ui/ConfigPanel/Header.js +4 -2
  137. package/dist/cjs/ui/ConfigPanel/NestedForms/RemovableField.js +4 -8
  138. package/dist/cjs/ui/ConfigPanel/transformers.js +2 -2
  139. package/dist/cjs/ui/ContentStyles/index.js +4 -2
  140. package/dist/cjs/ui/ContextPanel/index.js +3 -1
  141. package/dist/cjs/ui/DropdownMenu/index.js +5 -0
  142. package/dist/cjs/ui/ElementBrowser/InsertMenu.js +6 -4
  143. package/dist/cjs/ui/ElementBrowser/ModalElementBrowser.js +4 -2
  144. package/dist/cjs/ui/ElementBrowser/components/CategoryList.js +4 -2
  145. package/dist/cjs/ui/ElementBrowser/components/ElementList/ElementList.js +12 -5
  146. package/dist/cjs/ui/ElementBrowser/components/ElementList/EmptyState.js +3 -1
  147. package/dist/cjs/ui/ElementBrowser/components/ElementSearch.js +3 -1
  148. package/dist/cjs/ui/ElementBrowser/constants.js +3 -1
  149. package/dist/cjs/ui/FloatingToolbar/styles.js +2 -2
  150. package/dist/cjs/ui/LinkSearch/LinkSearchListItem.js +5 -3
  151. package/dist/cjs/ui/PanelTextInput/styles.js +3 -1
  152. package/dist/cjs/ui/PluginSlot/index.js +7 -4
  153. package/dist/cjs/ui/Toolbar/ToolbarInner.js +2 -1
  154. package/dist/cjs/ui/Toolbar/ToolbarWithSizeDetector.js +5 -2
  155. package/dist/cjs/ui/ToolbarFeedback/styles.js +5 -3
  156. package/dist/cjs/ui/WithFlash/index.js +4 -2
  157. package/dist/cjs/ui/styles.js +6 -4
  158. package/dist/cjs/utils/document.js +62 -6
  159. package/dist/cjs/utils/filter/privacy-filter.js +2 -2
  160. package/dist/cjs/utils/step.js +17 -1
  161. package/dist/cjs/version-wrapper.js +1 -1
  162. package/dist/cjs/version.json +1 -1
  163. package/dist/es2019/actions/index.js +25 -1
  164. package/dist/es2019/create-editor/ReactEditorView.js +2 -0
  165. package/dist/es2019/create-editor/create-plugins-list.js +1 -2
  166. package/dist/es2019/editor.js +5 -2
  167. package/dist/es2019/keymaps/index.js +5 -1
  168. package/dist/es2019/labs/next/ContentComponents.js +7 -2
  169. package/dist/es2019/labs/next/full-page.js +11 -8
  170. package/dist/es2019/nodeviews/getInlineNodeViewProducer.js +4 -3
  171. package/dist/es2019/nodeviews/getInlineNodeViewProducer.styles.js +16 -4
  172. package/dist/es2019/plugins/alignment/ui/ToolbarAlignment/styles.js +2 -1
  173. package/dist/es2019/plugins/analytics/types/enums.js +3 -0
  174. package/dist/es2019/plugins/base/index.js +6 -15
  175. package/dist/es2019/plugins/base/pm-plugins/better-type-history.js +1 -11
  176. package/dist/es2019/plugins/base/pm-plugins/inline-cursor-target.js +72 -17
  177. package/dist/es2019/plugins/block-type/commands/block-type.js +25 -16
  178. package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/styled.js +3 -2
  179. package/dist/es2019/plugins/breakout/ui/LayoutButton.js +6 -10
  180. package/dist/es2019/plugins/card/styles.js +1 -1
  181. package/dist/es2019/plugins/card/ui/LinkToolbarIconDropdown.js +2 -2
  182. package/dist/es2019/plugins/code-block/actions.js +32 -0
  183. package/dist/es2019/plugins/code-block/nodeviews/code-block.js +61 -1
  184. package/dist/es2019/plugins/code-block/pm-plugins/actions.js +2 -1
  185. package/dist/es2019/plugins/code-block/pm-plugins/main.js +37 -3
  186. package/dist/es2019/plugins/code-block/styles.js +30 -27
  187. package/dist/es2019/plugins/collab-edit/styles.js +3 -2
  188. package/dist/es2019/plugins/collab-edit/ui/styles.js +4 -3
  189. package/dist/es2019/plugins/collab-edit/utils.js +1 -0
  190. package/dist/es2019/plugins/date/ui/DatePicker/index.js +3 -2
  191. package/dist/es2019/plugins/expand/ui/styles.js +15 -14
  192. package/dist/es2019/plugins/extension/commands.js +3 -2
  193. package/dist/es2019/plugins/extension/context-panel.js +11 -3
  194. package/dist/es2019/plugins/extension/plugin-factory.js +1 -3
  195. package/dist/es2019/plugins/extension/pm-plugins/main.js +12 -38
  196. package/dist/es2019/plugins/extension/ui/Extension/Extension/styles.js +5 -4
  197. package/dist/es2019/plugins/extension/ui/Extension/InlineExtension/styles.js +2 -1
  198. package/dist/es2019/plugins/extension/ui/Extension/styles.js +7 -6
  199. package/dist/es2019/plugins/extension/ui/SaveIndicator/SaveIndicator.js +4 -4
  200. package/dist/es2019/plugins/extension/utils.js +2 -37
  201. package/dist/es2019/plugins/fake-text-cursor/styles.js +3 -2
  202. package/dist/es2019/plugins/feature-flags-context/feature-flags-from-props.js +3 -2
  203. package/dist/es2019/plugins/find-replace/styles.js +4 -4
  204. package/dist/es2019/plugins/find-replace/ui/styles.js +3 -2
  205. package/dist/es2019/plugins/floating-toolbar/ui/DropdownMenu.js +2 -1
  206. package/dist/es2019/plugins/floating-toolbar/ui/EditorEmojiAddIcon.js +2 -1
  207. package/dist/es2019/plugins/floating-toolbar/ui/Separator.js +2 -1
  208. package/dist/es2019/plugins/floating-toolbar/ui/Toolbar.js +4 -4
  209. package/dist/es2019/plugins/floating-toolbar/ui/styles.js +11 -10
  210. package/dist/es2019/plugins/grid/styles.js +4 -2
  211. package/dist/es2019/plugins/help-dialog/ui/styles.js +10 -9
  212. package/dist/es2019/plugins/hyperlink/pm-plugins/input-rule.js +24 -2
  213. package/dist/es2019/plugins/hyperlink/pm-plugins/keymap.js +9 -1
  214. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +5 -4
  215. package/dist/es2019/plugins/hyperlink/utils.js +43 -2
  216. package/dist/es2019/plugins/jira-issue/nodeviews/jira-issue.js +6 -5
  217. package/dist/es2019/plugins/layout/styles.js +10 -7
  218. package/dist/es2019/plugins/media/commands/helpers.js +6 -8
  219. package/dist/es2019/plugins/media/nodeviews/mediaInline.js +21 -5
  220. package/dist/es2019/plugins/media/nodeviews/mediaNodeView/media.js +7 -0
  221. package/dist/es2019/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +5 -4
  222. package/dist/es2019/plugins/media/pm-plugins/main.js +2 -0
  223. package/dist/es2019/plugins/media/styles.js +3 -3
  224. package/dist/es2019/plugins/media/ui/CaptionPlaceholder/index.js +2 -1
  225. package/dist/es2019/plugins/media/ui/Media/DropPlaceholder.js +4 -3
  226. package/dist/es2019/plugins/media/ui/MediaLinkingToolbar.js +2 -1
  227. package/dist/es2019/plugins/mentions/styles.js +5 -4
  228. package/dist/es2019/plugins/mentions/ui/InviteItem/index.js +2 -1
  229. package/dist/es2019/plugins/mentions/ui/InviteItem/styles.js +3 -2
  230. package/dist/es2019/plugins/panel/index.js +1 -0
  231. package/dist/es2019/plugins/panel/nodeviews/panel.js +4 -1
  232. package/dist/es2019/plugins/panel/pm-plugins/keymaps.js +22 -4
  233. package/dist/es2019/plugins/paste/handlers.js +45 -7
  234. package/dist/es2019/plugins/paste/linkify-md-plugin.js +7 -1
  235. package/dist/es2019/plugins/paste/pm-plugins/analytics.js +4 -1
  236. package/dist/es2019/plugins/paste/pm-plugins/main.js +27 -2
  237. package/dist/es2019/plugins/placeholder/index.js +12 -1
  238. package/dist/es2019/plugins/placeholder/styles.js +3 -1
  239. package/dist/es2019/plugins/placeholder-text/styles.js +5 -4
  240. package/dist/es2019/plugins/selection/gap-cursor/styles.js +9 -9
  241. package/dist/es2019/plugins/selection/pm-plugins/gap-cursor-main.js +2 -2
  242. package/dist/es2019/plugins/status/ui/statusPicker.js +3 -3
  243. package/dist/es2019/plugins/table/index.js +13 -4
  244. package/dist/es2019/plugins/table/nodeviews/TableComponent.js +6 -6
  245. package/dist/es2019/plugins/table/nodeviews/table.js +6 -2
  246. package/dist/es2019/plugins/table/pm-plugins/main.js +1 -4
  247. package/dist/es2019/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +106 -0
  248. package/dist/es2019/plugins/table/pm-plugins/table-resizing/event-handlers.js +2 -4
  249. package/dist/es2019/plugins/table/pm-plugins/table-resizing/plugin.js +2 -4
  250. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/misc.js +3 -7
  251. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -3
  252. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +0 -3
  253. package/dist/es2019/plugins/table/transforms/column-width.js +1 -2
  254. package/dist/es2019/plugins/table/transforms/fix-tables.js +1 -3
  255. package/dist/es2019/plugins/table/ui/FloatingContextualButton/styles.js +4 -2
  256. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/styles.js +4 -3
  257. package/dist/es2019/plugins/table/ui/common-styles.js +29 -27
  258. package/dist/es2019/plugins/table/ui/consts.js +15 -12
  259. package/dist/es2019/plugins/table/ui/ui-styles.js +28 -23
  260. package/dist/es2019/plugins/table/utils/decoration.js +1 -4
  261. package/dist/es2019/plugins/table/utils/paste.js +9 -9
  262. package/dist/es2019/plugins/type-ahead/index.js +4 -3
  263. package/dist/es2019/plugins/type-ahead/pm-plugins/decorations.js +2 -1
  264. package/dist/es2019/plugins/type-ahead/ui/TypeAheadList.js +4 -4
  265. package/dist/es2019/plugins/type-ahead/ui/TypeAheadListItem.js +10 -9
  266. package/dist/es2019/plugins/type-ahead/ui/TypeAheadPopup.js +64 -6
  267. package/dist/es2019/plugins/unsupported-content/styles.js +1 -1
  268. package/dist/es2019/ui/Addon/Dropdown/styles.js +3 -2
  269. package/dist/es2019/ui/Addon/DropdownItem/styles.js +3 -2
  270. package/dist/es2019/ui/Appearance/Chromeless.js +2 -1
  271. package/dist/es2019/ui/Appearance/Comment/Comment.js +9 -4
  272. package/dist/es2019/ui/Appearance/Comment/Toolbar.js +4 -2
  273. package/dist/es2019/ui/Appearance/FullPage/FullPage.js +6 -2
  274. package/dist/es2019/ui/Appearance/FullPage/FullPageContentArea.js +2 -1
  275. package/dist/es2019/ui/Appearance/FullPage/FullPageToolbar.js +12 -11
  276. package/dist/es2019/ui/Appearance/FullPage/MainToolbar.js +7 -3
  277. package/dist/es2019/ui/ChromeCollapsed/styles.js +4 -3
  278. package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +10 -2
  279. package/dist/es2019/ui/ConfigPanel/ConfigPanelFieldsLoader.js +2 -0
  280. package/dist/es2019/ui/ConfigPanel/ErrorMessage/ErrorImage.js +3 -0
  281. package/dist/es2019/ui/ConfigPanel/Fields/CheckboxGroup.js +2 -1
  282. package/dist/es2019/ui/ConfigPanel/Fields/Expand.js +2 -1
  283. package/dist/es2019/ui/ConfigPanel/Fields/Fieldset.js +2 -1
  284. package/dist/es2019/ui/ConfigPanel/Fields/common/RequiredIndicator.js +2 -1
  285. package/dist/es2019/ui/ConfigPanel/Header.js +3 -2
  286. package/dist/es2019/ui/ConfigPanel/NestedForms/RemovableField.js +4 -3
  287. package/dist/es2019/ui/ContentStyles/index.js +3 -2
  288. package/dist/es2019/ui/ContextPanel/index.js +2 -1
  289. package/dist/es2019/ui/DropdownMenu/index.js +5 -0
  290. package/dist/es2019/ui/ElementBrowser/InsertMenu.js +6 -3
  291. package/dist/es2019/ui/ElementBrowser/ModalElementBrowser.js +3 -2
  292. package/dist/es2019/ui/ElementBrowser/components/CategoryList.js +3 -2
  293. package/dist/es2019/ui/ElementBrowser/components/ElementList/ElementList.js +12 -5
  294. package/dist/es2019/ui/ElementBrowser/components/ElementList/EmptyState.js +2 -1
  295. package/dist/es2019/ui/ElementBrowser/components/ElementList/NotFoundIllustration.js +3 -0
  296. package/dist/es2019/ui/ElementBrowser/components/ElementSearch.js +2 -1
  297. package/dist/es2019/ui/ElementBrowser/constants.js +3 -1
  298. package/dist/es2019/ui/FloatingToolbar/styles.js +4 -4
  299. package/dist/es2019/ui/LinkSearch/LinkSearchListItem.js +4 -3
  300. package/dist/es2019/ui/PanelTextInput/styles.js +5 -5
  301. package/dist/es2019/ui/PluginSlot/index.js +7 -4
  302. package/dist/es2019/ui/Toolbar/ToolbarInner.js +2 -1
  303. package/dist/es2019/ui/Toolbar/ToolbarWithSizeDetector.js +4 -2
  304. package/dist/es2019/ui/ToolbarFeedback/styles.js +5 -4
  305. package/dist/es2019/ui/WithFlash/index.js +4 -3
  306. package/dist/es2019/ui/styles.js +10 -9
  307. package/dist/es2019/utils/document.js +58 -5
  308. package/dist/es2019/utils/filter/privacy-filter.js +1 -1
  309. package/dist/es2019/utils/step.js +12 -1
  310. package/dist/es2019/version-wrapper.js +1 -1
  311. package/dist/es2019/version.json +1 -1
  312. package/dist/esm/actions/index.js +27 -2
  313. package/dist/esm/create-editor/ErrorBoundary.js +1 -1
  314. package/dist/esm/create-editor/ReactEditorView.js +2 -0
  315. package/dist/esm/create-editor/create-plugins-list.js +1 -2
  316. package/dist/esm/editor.js +6 -4
  317. package/dist/esm/keymaps/index.js +5 -1
  318. package/dist/esm/labs/next/ContentComponents.js +8 -4
  319. package/dist/esm/labs/next/full-page.js +11 -8
  320. package/dist/esm/nodeviews/getInlineNodeViewProducer.js +4 -3
  321. package/dist/esm/nodeviews/getInlineNodeViewProducer.styles.js +3 -2
  322. package/dist/esm/plugins/alignment/ui/ToolbarAlignment/styles.js +2 -1
  323. package/dist/esm/plugins/analytics/types/enums.js +3 -0
  324. package/dist/esm/plugins/annotation/pm-plugins/inline-comment.js +1 -1
  325. package/dist/esm/plugins/annotation/pm-plugins/plugin-factory.js +0 -1
  326. package/dist/esm/plugins/base/index.js +8 -17
  327. package/dist/esm/plugins/base/pm-plugins/better-type-history.js +1 -11
  328. package/dist/esm/plugins/base/pm-plugins/inline-cursor-target.js +72 -17
  329. package/dist/esm/plugins/block-type/commands/block-type.js +31 -22
  330. package/dist/esm/plugins/block-type/ui/ToolbarBlockType/styled.js +3 -2
  331. package/dist/esm/plugins/breakout/ui/LayoutButton.js +3 -5
  332. package/dist/esm/plugins/card/styles.js +1 -1
  333. package/dist/esm/plugins/card/ui/LinkToolbarIconDropdown.js +2 -2
  334. package/dist/esm/plugins/code-block/actions.js +28 -0
  335. package/dist/esm/plugins/code-block/nodeviews/code-block.js +67 -1
  336. package/dist/esm/plugins/code-block/pm-plugins/actions.js +2 -1
  337. package/dist/esm/plugins/code-block/pm-plugins/main.js +39 -3
  338. package/dist/esm/plugins/code-block/styles.js +27 -23
  339. package/dist/esm/plugins/collab-edit/index.js +1 -1
  340. package/dist/esm/plugins/collab-edit/provider/channel.js +1 -1
  341. package/dist/esm/plugins/collab-edit/styles.js +3 -2
  342. package/dist/esm/plugins/collab-edit/ui/styles.js +3 -2
  343. package/dist/esm/plugins/collab-edit/utils.js +2 -0
  344. package/dist/esm/plugins/custom-autoformat/doc.js +1 -1
  345. package/dist/esm/plugins/custom-autoformat/index.js +1 -1
  346. package/dist/esm/plugins/date/ui/DatePicker/index.js +2 -1
  347. package/dist/esm/plugins/expand/ui/styles.js +15 -14
  348. package/dist/esm/plugins/extension/actions.js +1 -1
  349. package/dist/esm/plugins/extension/commands.js +3 -2
  350. package/dist/esm/plugins/extension/context-panel.js +22 -8
  351. package/dist/esm/plugins/extension/plugin-factory.js +1 -3
  352. package/dist/esm/plugins/extension/pm-plugins/main.js +12 -35
  353. package/dist/esm/plugins/extension/ui/Extension/Extension/styles.js +5 -4
  354. package/dist/esm/plugins/extension/ui/Extension/ExtensionComponent.js +1 -1
  355. package/dist/esm/plugins/extension/ui/Extension/InlineExtension/styles.js +2 -1
  356. package/dist/esm/plugins/extension/ui/Extension/styles.js +6 -5
  357. package/dist/esm/plugins/extension/ui/SaveIndicator/SaveIndicator.js +3 -2
  358. package/dist/esm/plugins/extension/utils.js +9 -51
  359. package/dist/esm/plugins/fake-text-cursor/styles.js +2 -1
  360. package/dist/esm/plugins/feature-flags-context/feature-flags-from-props.js +3 -2
  361. package/dist/esm/plugins/feedback-dialog/index.js +1 -2
  362. package/dist/esm/plugins/feedback-dialog/loadJiraCollectorDialogScript.js +1 -1
  363. package/dist/esm/plugins/find-replace/styles.js +3 -3
  364. package/dist/esm/plugins/find-replace/ui/styles.js +3 -2
  365. package/dist/esm/plugins/find-replace/utils/batch-decorations.js +1 -2
  366. package/dist/esm/plugins/floating-toolbar/ui/DropdownMenu.js +2 -1
  367. package/dist/esm/plugins/floating-toolbar/ui/EditorEmojiAddIcon.js +2 -1
  368. package/dist/esm/plugins/floating-toolbar/ui/ExtensionsPlaceholder.js +1 -1
  369. package/dist/esm/plugins/floating-toolbar/ui/Separator.js +2 -1
  370. package/dist/esm/plugins/floating-toolbar/ui/Toolbar.js +5 -4
  371. package/dist/esm/plugins/floating-toolbar/ui/styles.js +11 -10
  372. package/dist/esm/plugins/grid/styles.js +2 -1
  373. package/dist/esm/plugins/help-dialog/ui/styles.js +8 -7
  374. package/dist/esm/plugins/hyperlink/HyperlinkToolbarAppearance.js +1 -1
  375. package/dist/esm/plugins/hyperlink/pm-plugins/input-rule.js +24 -2
  376. package/dist/esm/plugins/hyperlink/pm-plugins/keymap.js +9 -1
  377. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +5 -5
  378. package/dist/esm/plugins/hyperlink/utils.js +44 -2
  379. package/dist/esm/plugins/image-upload/pm-plugins/main.js +1 -1
  380. package/dist/esm/plugins/jira-issue/nodeviews/jira-issue.js +3 -2
  381. package/dist/esm/plugins/layout/styles.js +1 -1
  382. package/dist/esm/plugins/macro/actions.js +1 -1
  383. package/dist/esm/plugins/media/commands/helpers.js +6 -8
  384. package/dist/esm/plugins/media/nodeviews/mediaGroup.js +1 -1
  385. package/dist/esm/plugins/media/nodeviews/mediaInline.js +23 -6
  386. package/dist/esm/plugins/media/nodeviews/mediaNodeUpdater.js +1 -1
  387. package/dist/esm/plugins/media/nodeviews/mediaNodeView/media.js +8 -1
  388. package/dist/esm/plugins/media/nodeviews/mediaSingle.js +1 -1
  389. package/dist/esm/plugins/media/picker-facade.js +1 -1
  390. package/dist/esm/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +4 -3
  391. package/dist/esm/plugins/media/pm-plugins/main.js +3 -1
  392. package/dist/esm/plugins/media/styles.js +1 -1
  393. package/dist/esm/plugins/media/toolbar/utils.js +1 -1
  394. package/dist/esm/plugins/media/ui/CaptionPlaceholder/index.js +2 -1
  395. package/dist/esm/plugins/media/ui/Media/DropPlaceholder.js +3 -2
  396. package/dist/esm/plugins/media/ui/MediaLinkingToolbar.js +2 -1
  397. package/dist/esm/plugins/media/ui/MediaPicker/PickerFacadeProvider.js +1 -1
  398. package/dist/esm/plugins/media/ui/ResizableMediaSingle/index.js +1 -1
  399. package/dist/esm/plugins/media/utils/check-media-type.js +1 -1
  400. package/dist/esm/plugins/mentions/styles.js +2 -1
  401. package/dist/esm/plugins/mentions/ui/InviteItem/index.js +2 -1
  402. package/dist/esm/plugins/mentions/ui/InviteItem/styles.js +3 -2
  403. package/dist/esm/plugins/panel/index.js +1 -0
  404. package/dist/esm/plugins/panel/nodeviews/panel.js +4 -1
  405. package/dist/esm/plugins/panel/pm-plugins/keymaps.js +22 -4
  406. package/dist/esm/plugins/paste/handlers.js +44 -8
  407. package/dist/esm/plugins/paste/linkify-md-plugin.js +7 -1
  408. package/dist/esm/plugins/paste/pm-plugins/analytics.js +6 -1
  409. package/dist/esm/plugins/paste/pm-plugins/main.js +28 -3
  410. package/dist/esm/plugins/placeholder/index.js +12 -1
  411. package/dist/esm/plugins/placeholder/styles.js +2 -1
  412. package/dist/esm/plugins/placeholder-text/styles.js +2 -1
  413. package/dist/esm/plugins/quick-insert/index.js +1 -1
  414. package/dist/esm/plugins/selection/gap-cursor/styles.js +1 -1
  415. package/dist/esm/plugins/selection/pm-plugins/gap-cursor-main.js +2 -2
  416. package/dist/esm/plugins/status/ui/statusPicker.js +2 -2
  417. package/dist/esm/plugins/table/index.js +13 -4
  418. package/dist/esm/plugins/table/nodeviews/TableComponent.js +6 -6
  419. package/dist/esm/plugins/table/nodeviews/table.js +6 -2
  420. package/dist/esm/plugins/table/pm-plugins/main.js +1 -4
  421. package/dist/esm/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +102 -0
  422. package/dist/esm/plugins/table/pm-plugins/table-resizing/event-handlers.js +2 -4
  423. package/dist/esm/plugins/table/pm-plugins/table-resizing/plugin.js +2 -5
  424. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/misc.js +4 -8
  425. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -3
  426. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +0 -3
  427. package/dist/esm/plugins/table/transforms/column-width.js +1 -2
  428. package/dist/esm/plugins/table/transforms/fix-tables.js +1 -3
  429. package/dist/esm/plugins/table/ui/FloatingContextualButton/styles.js +3 -1
  430. package/dist/esm/plugins/table/ui/FloatingContextualMenu/styles.js +2 -1
  431. package/dist/esm/plugins/table/ui/common-styles.js +4 -2
  432. package/dist/esm/plugins/table/ui/consts.js +15 -12
  433. package/dist/esm/plugins/table/ui/ui-styles.js +15 -10
  434. package/dist/esm/plugins/table/utils/decoration.js +3 -4
  435. package/dist/esm/plugins/table/utils/paste.js +9 -9
  436. package/dist/esm/plugins/tasks-and-decisions/ui/Task/task-item-with-providers.js +1 -1
  437. package/dist/esm/plugins/type-ahead/index.js +4 -3
  438. package/dist/esm/plugins/type-ahead/pm-plugins/decorations.js +2 -1
  439. package/dist/esm/plugins/type-ahead/ui/TypeAheadList.js +4 -4
  440. package/dist/esm/plugins/type-ahead/ui/TypeAheadListItem.js +10 -9
  441. package/dist/esm/plugins/type-ahead/ui/TypeAheadPopup.js +71 -5
  442. package/dist/esm/plugins/unsupported-content/styles.js +1 -1
  443. package/dist/esm/ui/Addon/Dropdown/styles.js +2 -1
  444. package/dist/esm/ui/Addon/DropdownItem/styles.js +2 -1
  445. package/dist/esm/ui/Appearance/Chromeless.js +2 -1
  446. package/dist/esm/ui/Appearance/Comment/Comment.js +10 -3
  447. package/dist/esm/ui/Appearance/Comment/Toolbar.js +3 -2
  448. package/dist/esm/ui/Appearance/FullPage/FullPage.js +6 -2
  449. package/dist/esm/ui/Appearance/FullPage/FullPageContentArea.js +2 -1
  450. package/dist/esm/ui/Appearance/FullPage/FullPageToolbar.js +12 -11
  451. package/dist/esm/ui/Appearance/FullPage/MainToolbar.js +5 -3
  452. package/dist/esm/ui/ChromeCollapsed/styles.js +1 -1
  453. package/dist/esm/ui/ConfigPanel/ConfigPanel.js +22 -15
  454. package/dist/esm/ui/ConfigPanel/ConfigPanelFieldsLoader.js +2 -0
  455. package/dist/esm/ui/ConfigPanel/ErrorMessage/ErrorImage.js +3 -0
  456. package/dist/esm/ui/ConfigPanel/Fields/CheckboxGroup.js +2 -1
  457. package/dist/esm/ui/ConfigPanel/Fields/CustomSelect.js +1 -1
  458. package/dist/esm/ui/ConfigPanel/Fields/Expand.js +2 -1
  459. package/dist/esm/ui/ConfigPanel/Fields/Fieldset.js +2 -1
  460. package/dist/esm/ui/ConfigPanel/Fields/UserSelect.js +1 -1
  461. package/dist/esm/ui/ConfigPanel/Fields/common/RequiredIndicator.js +2 -1
  462. package/dist/esm/ui/ConfigPanel/FormErrorBoundary.js +1 -1
  463. package/dist/esm/ui/ConfigPanel/Header.js +3 -2
  464. package/dist/esm/ui/ConfigPanel/NestedForms/RemovableField.js +3 -2
  465. package/dist/esm/ui/ConfigPanel/transformers.js +1 -1
  466. package/dist/esm/ui/ContentStyles/index.js +3 -2
  467. package/dist/esm/ui/ContextPanel/index.js +2 -1
  468. package/dist/esm/ui/DropdownMenu/index.js +5 -0
  469. package/dist/esm/ui/ElementBrowser/InsertMenu.js +5 -4
  470. package/dist/esm/ui/ElementBrowser/ModalElementBrowser.js +3 -2
  471. package/dist/esm/ui/ElementBrowser/components/CategoryList.js +3 -2
  472. package/dist/esm/ui/ElementBrowser/components/ElementList/ElementList.js +11 -5
  473. package/dist/esm/ui/ElementBrowser/components/ElementList/EmptyState.js +2 -1
  474. package/dist/esm/ui/ElementBrowser/components/ElementList/NotFoundIllustration.js +3 -0
  475. package/dist/esm/ui/ElementBrowser/components/ElementSearch.js +2 -1
  476. package/dist/esm/ui/ElementBrowser/constants.js +3 -1
  477. package/dist/esm/ui/FloatingToolbar/styles.js +3 -3
  478. package/dist/esm/ui/LinkSearch/LinkSearchListItem.js +4 -3
  479. package/dist/esm/ui/LinkSearch/index.js +1 -1
  480. package/dist/esm/ui/PanelTextInput/styles.js +4 -3
  481. package/dist/esm/ui/PluginSlot/index.js +7 -4
  482. package/dist/esm/ui/Toolbar/ToolbarInner.js +2 -1
  483. package/dist/esm/ui/Toolbar/ToolbarWithSizeDetector.js +4 -2
  484. package/dist/esm/ui/ToolbarFeedback/index.js +1 -1
  485. package/dist/esm/ui/ToolbarFeedback/styles.js +4 -3
  486. package/dist/esm/ui/WithFlash/index.js +3 -2
  487. package/dist/esm/ui/styles.js +5 -4
  488. package/dist/esm/utils/action.js +1 -1
  489. package/dist/esm/utils/clipboard.js +1 -1
  490. package/dist/esm/utils/document.js +59 -5
  491. package/dist/esm/utils/extensions.js +1 -1
  492. package/dist/esm/utils/filter/privacy-filter.js +1 -1
  493. package/dist/esm/utils/step.js +12 -1
  494. package/dist/esm/version-wrapper.js +1 -1
  495. package/dist/esm/version.json +1 -1
  496. package/dist/types/actions/index.d.ts +6 -0
  497. package/dist/types/labs/next/ContentComponents.d.ts +7 -1
  498. package/dist/types/nodeviews/getInlineNodeViewProducer.d.ts +1 -0
  499. package/dist/types/plugins/analytics/types/enums.d.ts +3 -0
  500. package/dist/types/plugins/analytics/types/general-events.d.ts +7 -1
  501. package/dist/types/plugins/base/pm-plugins/inline-cursor-target.d.ts +1 -1
  502. package/dist/types/plugins/code-block/actions.d.ts +2 -0
  503. package/dist/types/plugins/code-block/nodeviews/code-block.d.ts +2 -0
  504. package/dist/types/plugins/code-block/pm-plugins/actions.d.ts +1 -0
  505. package/dist/types/plugins/code-block/pm-plugins/main-state.d.ts +1 -0
  506. package/dist/types/plugins/extension/commands.d.ts +1 -1
  507. package/dist/types/plugins/extension/pm-plugins/main.d.ts +1 -2
  508. package/dist/types/plugins/extension/types.d.ts +1 -1
  509. package/dist/types/plugins/extension/ui/Extension/Extension/index.d.ts +6 -0
  510. package/dist/types/plugins/extension/utils.d.ts +1 -3
  511. package/dist/types/plugins/find-replace/styles.d.ts +0 -2
  512. package/dist/types/plugins/hyperlink/utils.d.ts +8 -0
  513. package/dist/types/plugins/media/commands/helpers.d.ts +2 -0
  514. package/dist/types/plugins/media/nodeviews/mediaNodeView/media.d.ts +1 -0
  515. package/dist/types/plugins/media/pm-plugins/main.d.ts +2 -1
  516. package/dist/types/plugins/media/pm-plugins/types.d.ts +2 -1
  517. package/dist/types/plugins/paste/handlers.d.ts +1 -0
  518. package/dist/types/plugins/paste/pm-plugins/analytics.d.ts +1 -0
  519. package/dist/types/plugins/table/commands/misc.d.ts +0 -1
  520. package/dist/types/plugins/table/index.d.ts +0 -1
  521. package/dist/types/plugins/table/nodeviews/TableComponent.d.ts +1 -0
  522. package/dist/types/plugins/table/nodeviews/types.d.ts +0 -1
  523. package/dist/types/plugins/table/pm-plugins/main.d.ts +1 -1
  524. package/dist/types/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.d.ts +15 -0
  525. package/dist/types/plugins/table/pm-plugins/table-resizing/event-handlers.d.ts +1 -1
  526. package/dist/types/plugins/table/pm-plugins/table-resizing/plugin.d.ts +1 -1
  527. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/misc.d.ts +1 -2
  528. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/resize-state.d.ts +1 -1
  529. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/scale-table.d.ts +0 -1
  530. package/dist/types/plugins/table/transforms/fix-tables.d.ts +0 -1
  531. package/dist/types/plugins/table/types.d.ts +0 -1
  532. package/dist/types/plugins/table/ui/consts.d.ts +9 -9
  533. package/dist/types/plugins/type-ahead/ui/TypeAheadList.d.ts +2 -0
  534. package/dist/types/plugins/type-ahead/ui/TypeAheadListItem.d.ts +4 -4
  535. package/dist/types/types/editor-appearance-component.d.ts +0 -1
  536. package/dist/types/types/editor-props.d.ts +4 -0
  537. package/dist/types/types/feature-flags.d.ts +8 -0
  538. package/dist/types/types/ui-components.d.ts +1 -0
  539. package/dist/types/ui/Appearance/FullPage/FullPage.d.ts +1 -0
  540. package/dist/types/ui/Appearance/FullPage/FullPageContentArea.d.ts +1 -0
  541. package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +3 -2
  542. package/dist/types/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +3 -2
  543. package/dist/types/ui/PluginSlot/index.d.ts +1 -0
  544. package/dist/types/ui/Toolbar/toolbar-types.d.ts +1 -0
  545. package/dist/types/utils/document.d.ts +1 -0
  546. package/dist/types/utils/step.d.ts +1 -0
  547. package/docs/0-intro.tsx +12 -4
  548. package/package.json +22 -22
@@ -39,25 +39,16 @@ var basePlugin = function basePlugin(options) {
39
39
  // In Firefox, when the selection is placed between adjacent nodes which are not contenteditatble
40
40
  // no cursor is presented to users.
41
41
  // In Safari, when the selection is placed between adjacent nodes which are not contenteditatble
42
- // the cursor appears inside the adjacent nodes.
43
- // This plugin workarounds the issues with chrome and firefox by inserting decorations between
42
+ // it is not possible to navigate with arrow keys.
43
+ // This plugin works around the issues by inserting decorations between
44
44
  // inline nodes which are set as contenteditable, and have a zero width space.
45
- // At time of development, using this workaround in Safari caused additional issues;
46
- // - visual artifacts when moving across inline nodes (ie. using the arrow key to traverse a
47
- // series of inline nodes)
48
- // - blocking the right arrow key when at the start of a line from moving to the end of the
49
- // previous line.
50
- // As such we only apply the workaround for firefox and chrome.
51
-
52
- if (browser.chrome || browser.gecko) {
53
- plugins.push({
54
- name: 'inlineCursorTargetPlugin',
55
- plugin: function plugin() {
56
- return options && options.allowInlineCursorTarget ? inlineCursorTargetPlugin() : undefined;
57
- }
58
- });
59
- }
60
45
 
46
+ plugins.push({
47
+ name: 'inlineCursorTargetPlugin',
48
+ plugin: function plugin() {
49
+ return options && options.allowInlineCursorTarget ? inlineCursorTargetPlugin() : undefined;
50
+ }
51
+ });
61
52
  plugins.push({
62
53
  name: 'focusHandlerPlugin',
63
54
  plugin: function plugin(_ref2) {
@@ -4,6 +4,7 @@ import { Fragment } from 'prosemirror-model';
4
4
  import { closeHistory } from 'prosemirror-history';
5
5
  import { ReplaceStep, ReplaceAroundStep } from 'prosemirror-transform';
6
6
  import { PluginKey } from 'prosemirror-state';
7
+ import { extractSliceFromStep } from '../../../utils/step';
7
8
 
8
9
  var getEnterKeyboardActionStep = function getEnterKeyboardActionStep(trs) {
9
10
  var firstTr = trs.length === 1 && trs[0];
@@ -25,17 +26,6 @@ var getEnterKeyboardActionStep = function getEnterKeyboardActionStep(trs) {
25
26
  return replaceSteps[0];
26
27
  };
27
28
 
28
- var extractSliceFromStep = function extractSliceFromStep(step) {
29
- if (!(step instanceof ReplaceStep) && !(step instanceof ReplaceAroundStep)) {
30
- return null;
31
- } // @ts-ignore This is by design. Slice is a private property, but accesible, from ReplaceStep.
32
- // However, we need to read it to found if the step was adding a newline
33
-
34
-
35
- var slice = step.slice;
36
- return slice;
37
- };
38
-
39
29
  var isSliceSplittingBlockNode = function isSliceSplittingBlockNode(slice) {
40
30
  var hasOnlyTwoChildren = slice.size > 1 && slice.content.childCount === 2;
41
31
 
@@ -1,7 +1,7 @@
1
1
  import { DecorationSet, Decoration } from 'prosemirror-view';
2
2
  import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
3
3
  import { PluginKey } from 'prosemirror-state';
4
- import { ZERO_WIDTH_SPACE } from '@atlaskit/editor-common/utils';
4
+ import { ZERO_WIDTH_SPACE, browser } from '@atlaskit/editor-common/utils';
5
5
  import { isTextSelection } from '../../../utils';
6
6
  export var inlineCursorTargetStateKey = new PluginKey('inlineCursorTargetPlugin');
7
7
  export var isInlineNodeView = function isInlineNodeView(node) {
@@ -20,13 +20,35 @@ export default (function () {
20
20
  var selection = tr.selection,
21
21
  doc = tr.doc;
22
22
  var $from = selection.$from,
23
- $to = selection.$to;
24
-
25
- if (selection && isTextSelection(selection)) {
23
+ $to = selection.$to; // In Safari, if the cursor target is to the right of the cursor it will block selections
24
+ // made with shift + arrowRight and vice versa for shift + arrowLeft. This is due to a
25
+ // contenteditable bug in safari, where editable elements block the selection but we need
26
+ // the cursor target to be editable for the following:
27
+ // - Ability to navigate with down/up arrows when between inline nodes
28
+ // - Ability to navigate with down/up arrows when between the start of a paragraph & an inline node
29
+ // - Ability to click and drag to select an inline node if it is the first node
30
+ // To prevent blocking the selection, we check handleDOMEvents and add meta to
31
+ // the transaction to prevent the plugin from making cursor target decorations.
32
+
33
+ var safariShiftSelection = tr.getMeta(inlineCursorTargetStateKey);
34
+
35
+ if (selection && isTextSelection(selection) && !safariShiftSelection) {
26
36
  var hasInlineNodeViewAfter = isInlineNodeView($from.nodeAfter);
27
37
  var hasInlineNodeViewBefore = isInlineNodeView($from.nodeBefore);
28
- var isAtStart = $from.parentOffset === 0 && isInlineNodeView($from.nodeAfter);
29
- var isAtEnd = doc.resolve($from.pos).node().lastChild === $from.nodeBefore && isInlineNodeView($from.nodeBefore); // Create editable decoration widgets either side of the cursor to allow
38
+ var isAtStartAndInlineNodeViewAfter = $from.parentOffset === 0 && isInlineNodeView($from.nodeAfter);
39
+ var isAtEndAndInlineNodeViewBefore = doc.resolve($from.pos).node().lastChild === $from.nodeBefore && isInlineNodeView($from.nodeBefore);
40
+
41
+ var createWidget = function createWidget(side) {
42
+ var node = document.createElement('span');
43
+ node.contentEditable = 'true';
44
+ node.appendChild(document.createTextNode(ZERO_WIDTH_SPACE));
45
+ node.className = 'cursor-target';
46
+ return Decoration.widget(selection.from, node, {
47
+ raw: true,
48
+ side: side === 'left' ? -1 : 1,
49
+ key: 'inlineCursor'
50
+ });
51
+ }; // Create editable decoration widgets either side of the cursor to allow
30
52
  // text input.
31
53
  // We check beforeInput events below to prevent content
32
54
  // being added to the decorations.
@@ -37,18 +59,8 @@ export default (function () {
37
59
  // - positioned between the beginning of another node and an inline node (firefox)
38
60
  // - positioned between an inline node and the end of a node (chrome)
39
61
 
40
- if ((hasInlineNodeViewAfter || isAtEnd) && (hasInlineNodeViewBefore || isAtStart)) {
41
- var createWidget = function createWidget(side) {
42
- var node = document.createElement('span');
43
- node.contentEditable = 'true';
44
- node.appendChild(document.createTextNode(ZERO_WIDTH_SPACE));
45
- return Decoration.widget(selection.from, node, {
46
- raw: true,
47
- side: side === 'left' ? -1 : 1,
48
- key: 'inlineCursor'
49
- });
50
- };
51
62
 
63
+ if (!browser.safari && (hasInlineNodeViewAfter || isAtEndAndInlineNodeViewBefore) && (hasInlineNodeViewBefore || isAtStartAndInlineNodeViewAfter)) {
52
64
  return {
53
65
  cursorTarget: {
54
66
  decorations: [createWidget('left'), createWidget('right')],
@@ -58,6 +70,34 @@ export default (function () {
58
70
  }
59
71
  }
60
72
  };
73
+ } // Only create one widget on the left or right of the cursor in Safari.
74
+ // This is to prevent the left key from being blocked when at the start of a paragraph,
75
+ // and the right key from being blocked when at the end of a paragraph. This also
76
+ // improves click and drag selections, making it easier to select the first node.
77
+
78
+
79
+ if (browser.safari) {
80
+ if (isAtEndAndInlineNodeViewBefore || hasInlineNodeViewBefore && hasInlineNodeViewAfter) {
81
+ return {
82
+ cursorTarget: {
83
+ decorations: [createWidget('left')],
84
+ positions: {
85
+ from: $from.pos,
86
+ to: $to.pos
87
+ }
88
+ }
89
+ };
90
+ } else if (isAtStartAndInlineNodeViewAfter) {
91
+ return {
92
+ cursorTarget: {
93
+ decorations: [createWidget('right')],
94
+ positions: {
95
+ from: $from.pos,
96
+ to: $to.pos
97
+ }
98
+ }
99
+ };
100
+ }
61
101
  }
62
102
  }
63
103
 
@@ -80,6 +120,21 @@ export default (function () {
80
120
  return null;
81
121
  },
82
122
  handleDOMEvents: {
123
+ // Workaround to prevent the decorations created by the plugin from
124
+ // blocking shift + arrow left/right selections in safari. When
125
+ // a shift + arrow left/right event is detected, send meta data to the
126
+ // plugin to prevent it from creating decorations.
127
+ // TODO We may be able to remove this when playing the following ticket:
128
+ // https://product-fabric.atlassian.net/browse/ED-14938
129
+ keydown: function keydown(view, event) {
130
+ if (browser.safari && event instanceof KeyboardEvent && event.shiftKey && (event.key === 'ArrowLeft' || event.key === 'ArrowRight')) {
131
+ view.dispatch(view.state.tr.setMeta(inlineCursorTargetStateKey, {
132
+ cursorTarget: undefined
133
+ }));
134
+ }
135
+
136
+ return false;
137
+ },
83
138
  // Check the DOM to see if there are inline cursor targets
84
139
  // after a composition event ends. If so, manually insert the
85
140
  // event data in order to prevent contents ending up inside
@@ -13,6 +13,7 @@ import { shouldSplitSelectedNodeOnNodeInsertion } from '../../../utils/insert';
13
13
  import { withAnalytics, ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '../../analytics';
14
14
  import { filterChildrenBetween } from '../../../utils';
15
15
  import { PanelType } from '@atlaskit/adf-schema';
16
+ import { CellSelection } from '@atlaskit/editor-tables';
16
17
  export function setBlockType(name) {
17
18
  return function (state, dispatch) {
18
19
  var nodes = state.schema.nodes;
@@ -49,14 +50,18 @@ export function setBlockTypeWithAnalytics(name, inputMethod) {
49
50
  }
50
51
  export function setNormalText() {
51
52
  return function (state, dispatch) {
52
- var tr = state.tr,
53
- _state$selection = state.selection,
54
- $from = _state$selection.$from,
55
- $to = _state$selection.$to,
56
- schema = state.schema;
53
+ var selection = state.selection,
54
+ schema = state.schema,
55
+ tr = state.tr;
56
+ var ranges = selection instanceof CellSelection ? selection.ranges : [selection];
57
+ ranges.forEach(function (_ref) {
58
+ var $from = _ref.$from,
59
+ $to = _ref.$to;
60
+ tr.setBlockType($from.pos, $to.pos, schema.nodes.paragraph);
61
+ });
57
62
 
58
63
  if (dispatch) {
59
- dispatch(tr.setBlockType($from.pos, $to.pos, schema.nodes.paragraph));
64
+ dispatch(tr);
60
65
  }
61
66
 
62
67
  return true;
@@ -118,16 +123,20 @@ export function setNormalTextWithAnalytics(inputMethod) {
118
123
  }
119
124
  export function setHeading(level) {
120
125
  return function (state, dispatch) {
121
- var tr = state.tr,
122
- _state$selection2 = state.selection,
123
- $from = _state$selection2.$from,
124
- $to = _state$selection2.$to,
125
- schema = state.schema;
126
+ var selection = state.selection,
127
+ schema = state.schema,
128
+ tr = state.tr;
129
+ var ranges = selection instanceof CellSelection ? selection.ranges : [selection];
130
+ ranges.forEach(function (_ref2) {
131
+ var $from = _ref2.$from,
132
+ $to = _ref2.$to;
133
+ tr.setBlockType($from.pos, $to.pos, schema.nodes.heading, {
134
+ level: level
135
+ });
136
+ });
126
137
 
127
138
  if (dispatch) {
128
- dispatch(tr.setBlockType($from.pos, $to.pos, schema.nodes.heading, {
129
- level: level
130
- }));
139
+ dispatch(tr);
131
140
  }
132
141
 
133
142
  return true;
@@ -229,9 +238,9 @@ export var insertBlockTypesWithAnalytics = function insertBlockTypesWithAnalytic
229
238
  function wrapSelectionIn(type) {
230
239
  return function (state, dispatch) {
231
240
  var tr = state.tr;
232
- var _state$selection3 = state.selection,
233
- $from = _state$selection3.$from,
234
- $to = _state$selection3.$to;
241
+ var _state$selection = state.selection,
242
+ $from = _state$selection.$from,
243
+ $to = _state$selection.$to;
235
244
  var _state$schema$marks = state.schema.marks,
236
245
  alignment = _state$schema$marks.alignment,
237
246
  indentation = _state$schema$marks.indentation;
@@ -266,9 +275,9 @@ function insertCodeBlock() {
266
275
  var _state$selection$$fro;
267
276
 
268
277
  var tr = state.tr;
269
- var _state$selection4 = state.selection,
270
- $to = _state$selection4.$to,
271
- $from = _state$selection4.$from;
278
+ var _state$selection2 = state.selection,
279
+ $to = _state$selection2.$to,
280
+ $from = _state$selection2.$from;
272
281
  var codeBlock = state.schema.nodes.codeBlock;
273
282
  var grandParentType = (_state$selection$$fro = state.selection.$from.node(-1)) === null || _state$selection$$fro === void 0 ? void 0 : _state$selection$$fro.type;
274
283
  var parentType = state.selection.$from.parent.type;
@@ -292,8 +301,8 @@ function insertCodeBlock() {
292
301
  }
293
302
 
294
303
  export var cleanUpAtTheStartOfDocument = function cleanUpAtTheStartOfDocument(state, dispatch) {
295
- var _ref = state.selection,
296
- $cursor = _ref.$cursor;
304
+ var _ref3 = state.selection,
305
+ $cursor = _ref3.$cursor;
297
306
 
298
307
  if ($cursor && !$cursor.nodeBefore && !$cursor.nodeAfter && $cursor.pos === 1) {
299
308
  var tr = state.tr,
@@ -7,12 +7,13 @@ import { css } from '@emotion/react';
7
7
  import { N400 } from '@atlaskit/theme/colors';
8
8
  import { headingsSharedStyles } from '@atlaskit/editor-common/styles';
9
9
  import { shortcutStyle } from '../../../../ui/styles';
10
+ import { token } from '@atlaskit/tokens';
10
11
  export var blockTypeMenuItemStyle = function blockTypeMenuItemStyle(tagName, selected) {
11
12
  // TEMP FIX: See https://product-fabric.atlassian.net/browse/ED-13878
12
- var selectedStyle = selected ? "".concat(tagName, " { color: white !important; }") : '';
13
+ var selectedStyle = selected ? "".concat(tagName, " { color: ").concat(token('color.text.inverse', 'white'), " !important; }") : '';
13
14
  return function (themeProps) {
14
15
  return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", ";\n > {\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 0;\n }\n }\n ", ";\n "])), headingsSharedStyles(themeProps), selectedStyle);
15
16
  };
16
17
  };
17
18
  export var keyboardShortcut = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n ", "\n margin-left: 16px;\n"])), shortcutStyle);
18
- export var keyboardShortcutSelect = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n color: ", ";\n"])), N400);
19
+ export var keyboardShortcutSelect = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n color: ", ";\n"])), token('color.icon', N400));
@@ -16,7 +16,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
16
16
  /** @jsx jsx */
17
17
  import React from 'react';
18
18
  import { css, jsx } from '@emotion/react';
19
- import * as colors from '@atlaskit/theme/colors';
19
+ import { B300, N300, N20A } from '@atlaskit/theme/colors';
20
20
  import { injectIntl } from 'react-intl-next';
21
21
  import { findParentDomRefOfType, findDomRefAtPos } from 'prosemirror-utils';
22
22
  import { Popup } from '@atlaskit/editor-common/ui';
@@ -32,10 +32,8 @@ import { isBreakoutMarkAllowed } from '../utils/is-breakout-mark-allowed';
32
32
  import { getPluginState } from '../plugin-key';
33
33
  import { NodeSelection } from 'prosemirror-state';
34
34
  import { isSupportedNodeForBreakout } from '../utils/is-supported-node';
35
- var B300 = colors.B300,
36
- N300 = colors.N300,
37
- N20A = colors.N20A;
38
- var toolbarButtonWrapper = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n && button {\n background: ", ";\n color: ", ";\n :hover {\n background: ", ";\n color: white !important;\n }\n }\n"])), N20A, N300, B300);
35
+ import { token } from '@atlaskit/tokens';
36
+ var toolbarButtonWrapper = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n && button {\n background: ", ";\n color: ", ";\n :hover {\n background: ", ";\n color: ", " !important;\n }\n }\n"])), token('color.background.neutral', N20A), token('color.icon', N300), token('color.background.neutral.hovered', B300), token('color.icon', 'white'));
39
37
  var BREAKOUT_MODE = {
40
38
  FULL_WIDTH: 'full-width',
41
39
  CENTER: 'center',
@@ -8,4 +8,4 @@ import { N20 } from '@atlaskit/theme/colors';
8
8
  import { SmartCardSharedCssClassName } from '@atlaskit/editor-common/styles';
9
9
  import { akEditorSelectedNodeClassName } from '@atlaskit/editor-shared-styles';
10
10
  import { token } from '@atlaskit/tokens';
11
- export var smartCardStyles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .", " {\n max-width: calc(100% - 20px);\n vertical-align: top;\n word-break: break-all;\n\n .card {\n padding-left: 2px;\n padding-right: 2px;\n\n .", " > a:focus {\n ", "\n }\n }\n\n &.", "\n .", "\n > a {\n ", "\n }\n .", " > a {\n /* EDM-1717: box-shadow Safari fix start */\n z-index: 1;\n position: relative;\n /* EDM-1717: box-shadow Safari fix end */\n }\n\n &.danger {\n .", " > a {\n box-shadow: 0 0 0 1px\n ", ";\n /* EDM-1717: box-shadow Safari fix start */\n z-index: 2;\n /* EDM-1717: box-shadow Safari fix end */\n }\n }\n }\n\n .", " {\n .", " > div {\n cursor: pointer;\n &:hover {\n background-color: ", ";\n }\n }\n\n &.", "\n .", "\n > div {\n ", "\n }\n\n &.danger {\n .", " > div {\n box-shadow: 0 0 0 1px\n ", " !important;\n }\n }\n }\n\n .", " {\n .", " > div {\n cursor: pointer;\n &::after {\n transition: box-shadow 0s;\n }\n }\n &.", "\n .", "\n > div {\n ", "\n }\n\n &.", "\n .", "\n > div::after {\n ", "\n }\n\n &.danger {\n .media-card-frame::after {\n box-shadow: 0 0 0 1px\n ", " !important;\n background: ", " !important;\n }\n .richMedia-resize-handle-right::after,\n .richMedia-resize-handle-left::after {\n background: ", ";\n }\n }\n }\n"])), SmartCardSharedCssClassName.INLINE_CARD_CONTAINER, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), SmartCardSharedCssClassName.LOADER_WRAPPER, SmartCardSharedCssClassName.LOADER_WRAPPER, token('color.border.danger', akEditorDeleteBorder), SmartCardSharedCssClassName.BLOCK_CARD_CONTAINER, SmartCardSharedCssClassName.LOADER_WRAPPER, N20, akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), SmartCardSharedCssClassName.LOADER_WRAPPER, token('color.border.danger', akEditorDeleteBorder), SmartCardSharedCssClassName.EMBED_CARD_CONTAINER, SmartCardSharedCssClassName.LOADER_WRAPPER, akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), token('color.border.danger', akEditorDeleteBorder), token('color.background.danger', akEditorDeleteBackground), token('color.border.danger', akEditorDeleteBorder));
11
+ export var smartCardStyles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .", " {\n max-width: calc(100% - 20px);\n vertical-align: top;\n word-break: break-all;\n\n .card {\n padding-left: 2px;\n padding-right: 2px;\n\n .", " > a:focus {\n ", "\n }\n }\n\n &.", "\n .", "\n > a {\n ", "\n }\n .", " > a {\n /* EDM-1717: box-shadow Safari fix start */\n z-index: 1;\n position: relative;\n /* EDM-1717: box-shadow Safari fix end */\n }\n\n &.danger {\n .", " > a {\n box-shadow: 0 0 0 1px\n ", ";\n /* EDM-1717: box-shadow Safari fix start */\n z-index: 2;\n /* EDM-1717: box-shadow Safari fix end */\n }\n }\n }\n\n .", " {\n .", " > div {\n cursor: pointer;\n &:hover {\n background-color: ", ";\n }\n }\n\n &.", "\n .", "\n > div {\n ", "\n }\n\n &.danger {\n .", " > div {\n box-shadow: 0 0 0 1px\n ", " !important;\n }\n }\n }\n\n .", " {\n .", " > div {\n cursor: pointer;\n &::after {\n transition: box-shadow 0s;\n }\n }\n &.", "\n .", "\n > div {\n ", "\n }\n\n &.", "\n .", "\n > div::after {\n ", "\n }\n\n &.danger {\n .media-card-frame::after {\n box-shadow: 0 0 0 1px\n ", " !important;\n background: ", " !important;\n }\n .richMedia-resize-handle-right::after,\n .richMedia-resize-handle-left::after {\n background: ", ";\n }\n }\n }\n"])), SmartCardSharedCssClassName.INLINE_CARD_CONTAINER, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), SmartCardSharedCssClassName.LOADER_WRAPPER, SmartCardSharedCssClassName.LOADER_WRAPPER, token('color.border.danger', akEditorDeleteBorder), SmartCardSharedCssClassName.BLOCK_CARD_CONTAINER, SmartCardSharedCssClassName.LOADER_WRAPPER, token('color.background.neutral.subtle.hovered', N20), akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), SmartCardSharedCssClassName.LOADER_WRAPPER, token('color.border.danger', akEditorDeleteBorder), SmartCardSharedCssClassName.EMBED_CARD_CONTAINER, SmartCardSharedCssClassName.LOADER_WRAPPER, akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), token('color.border.danger', akEditorDeleteBorder), token('color.background.danger', akEditorDeleteBackground), token('color.border.danger', akEditorDeleteBorder));
@@ -17,7 +17,7 @@ var iconBoxStyles = css({
17
17
  width: ICON_HEIGHT,
18
18
  height: ICON_WIDTH,
19
19
  overflow: 'hidden',
20
- border: '1px solid rgba(223, 225, 229, 0.5)'
20
+ border: "1px solid ".concat(token('color.border', 'rgba(223, 225, 229, 0.5)'))
21
21
  /* N60 at 50% */
22
22
  ,
23
23
  borderRadius: borderRadius(),
@@ -25,7 +25,7 @@ var iconBoxStyles = css({
25
25
  display: 'flex',
26
26
  justifyContent: 'center',
27
27
  alignItems: 'center',
28
- backgroundColor: token('color.background.default', 'white')
28
+ backgroundColor: token('elevation.surface', 'white')
29
29
  });
30
30
  var primitiveStyles = css({
31
31
  padding: '0.75rem',
@@ -91,5 +91,33 @@ export var resetCopiedState = function resetCopiedState(state, dispatch) {
91
91
  }
92
92
  }
93
93
 
94
+ return true;
95
+ };
96
+ export var ignoreFollowingMutations = function ignoreFollowingMutations(state, dispatch) {
97
+ var tr = state.tr;
98
+ var ignoreFollowingMutationsTr = tr;
99
+ ignoreFollowingMutationsTr.setMeta(pluginKey, {
100
+ type: ACTIONS.SET_SHOULD_IGNORE_FOLLOWING_MUTATIONS,
101
+ data: true
102
+ });
103
+
104
+ if (dispatch) {
105
+ dispatch(ignoreFollowingMutationsTr);
106
+ }
107
+
108
+ return true;
109
+ };
110
+ export var resetShouldIgnoreFollowingMutations = function resetShouldIgnoreFollowingMutations(state, dispatch) {
111
+ var tr = state.tr;
112
+ var ignoreFollowingMutationsTr = tr;
113
+ ignoreFollowingMutationsTr.setMeta(pluginKey, {
114
+ type: ACTIONS.SET_SHOULD_IGNORE_FOLLOWING_MUTATIONS,
115
+ data: false
116
+ });
117
+
118
+ if (dispatch) {
119
+ dispatch(ignoreFollowingMutationsTr);
120
+ }
121
+
94
122
  return true;
95
123
  };
@@ -1,9 +1,13 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
1
2
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
3
  import _createClass from "@babel/runtime/helpers/createClass";
3
4
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
5
  import rafSchedule from 'raf-schd';
6
+ import { browser } from '@atlaskit/editor-common/utils';
5
7
  import { DOMSerializer } from 'prosemirror-model';
6
8
  import { codeBlockClassNames } from '../ui/class-names';
9
+ import { resetShouldIgnoreFollowingMutations } from '../actions';
10
+ import { getPluginState } from '../pm-plugins/main-state';
7
11
  var MATCH_NEWLINES = new RegExp('\n', 'g');
8
12
 
9
13
  var toDOM = function toDOM(node) {
@@ -61,6 +65,57 @@ export var CodeBlockView = /*#__PURE__*/function () {
61
65
  }
62
66
 
63
67
  _createClass(CodeBlockView, [{
68
+ key: "updateDOMAndSelection",
69
+ value: function updateDOMAndSelection(savedInnerHTML, newCursorPosition) {
70
+ var _this$dom;
71
+
72
+ if ((_this$dom = this.dom) !== null && _this$dom !== void 0 && _this$dom.childNodes && this.dom.childNodes.length > 1) {
73
+ var _contentView$childNod;
74
+
75
+ var contentView = this.dom.childNodes[1];
76
+
77
+ if ((contentView === null || contentView === void 0 ? void 0 : (_contentView$childNod = contentView.childNodes) === null || _contentView$childNod === void 0 ? void 0 : _contentView$childNod.length) > 0) {
78
+ var codeElement = contentView.firstChild;
79
+ codeElement.innerHTML = savedInnerHTML; // We need to set cursor for the DOM update
80
+
81
+ var textElement = _toConsumableArray(codeElement.childNodes).find(function (child) {
82
+ return child.nodeName === '#text';
83
+ });
84
+
85
+ var sel = window.getSelection();
86
+ var range = document.createRange();
87
+ range.setStart(textElement, newCursorPosition);
88
+ range.collapse(true);
89
+ sel === null || sel === void 0 ? void 0 : sel.removeAllRanges();
90
+ sel === null || sel === void 0 ? void 0 : sel.addRange(range);
91
+ }
92
+ }
93
+ }
94
+ }, {
95
+ key: "coalesceDOMElements",
96
+ value: function coalesceDOMElements() {
97
+ var _this$dom2;
98
+
99
+ if ((_this$dom2 = this.dom) !== null && _this$dom2 !== void 0 && _this$dom2.childNodes && this.dom.childNodes.length > 1) {
100
+ var contentView = this.dom.childNodes[1];
101
+
102
+ if (contentView !== null && contentView !== void 0 && contentView.childNodes && contentView.childNodes.length > 1) {
103
+ var savedInnerHTML = '';
104
+
105
+ while (contentView.childNodes.length > 1) {
106
+ var lastChild = contentView.lastChild;
107
+ savedInnerHTML = lastChild.innerHTML + savedInnerHTML;
108
+ contentView.removeChild(lastChild);
109
+ }
110
+
111
+ var firstChild = contentView.firstChild;
112
+ savedInnerHTML = firstChild.innerHTML + '\n' + savedInnerHTML;
113
+ var newCursorPosition = firstChild.innerHTML.length + 1;
114
+ setTimeout(this.updateDOMAndSelection.bind(this, savedInnerHTML, newCursorPosition), 20);
115
+ }
116
+ }
117
+ }
118
+ }, {
64
119
  key: "update",
65
120
  value: function update(node) {
66
121
  if (node.type !== this.node.type) {
@@ -74,6 +129,11 @@ export var CodeBlockView = /*#__PURE__*/function () {
74
129
 
75
130
  this.node = node;
76
131
  this.ensureLineNumbers();
132
+
133
+ if (browser.android) {
134
+ this.coalesceDOMElements();
135
+ resetShouldIgnoreFollowingMutations(this.view.state, this.view.dispatch);
136
+ }
77
137
  }
78
138
 
79
139
  return true;
@@ -81,7 +141,13 @@ export var CodeBlockView = /*#__PURE__*/function () {
81
141
  }, {
82
142
  key: "ignoreMutation",
83
143
  value: function ignoreMutation(record) {
84
- // Ensure updating the line-number gutter doesn't trigger reparsing the codeblock
144
+ var pluginState = getPluginState(this.view.state);
145
+
146
+ if (pluginState !== null && pluginState !== void 0 && pluginState.shouldIgnoreFollowingMutations) {
147
+ return true;
148
+ } // Ensure updating the line-number gutter doesn't trigger reparsing the codeblock
149
+
150
+
85
151
  return record.target === this.lineNumberGutter || record.target.parentNode === this.lineNumberGutter;
86
152
  }
87
153
  }]);
@@ -1,3 +1,4 @@
1
1
  export var ACTIONS = {
2
- SET_COPIED_TO_CLIPBOARD: 'SET_COPIED_TO_CLIPBOARD'
2
+ SET_COPIED_TO_CLIPBOARD: 'SET_COPIED_TO_CLIPBOARD',
3
+ SET_SHOULD_IGNORE_FOLLOWING_MUTATIONS: 'SET_SHOULD_IGNORE_FOLLOWING_MUTATIONS'
3
4
  };
@@ -5,6 +5,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
5
5
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
6
 
7
7
  import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
8
+ import { browser } from '@atlaskit/editor-common/utils';
8
9
  import { NodeSelection } from 'prosemirror-state';
9
10
  import { codeBidiWarningMessages } from '@atlaskit/editor-common/messages';
10
11
  import { codeBlockNodeView } from '../nodeviews/code-block';
@@ -12,6 +13,7 @@ import { highlightingCodeBlockNodeView } from '../nodeviews/highlighting-code-bl
12
13
  import { createSelectionClickHandler } from '../../selection/utils';
13
14
  import { pluginKey } from '../plugin-key';
14
15
  import { ACTIONS } from './actions';
16
+ import { ignoreFollowingMutations, resetShouldIgnoreFollowingMutations } from '../actions';
15
17
  import { findCodeBlock } from '../utils';
16
18
  import { codeBlockClassNames } from '../ui/class-names';
17
19
  import { getFeatureFlags } from '../../feature-flags-context';
@@ -29,12 +31,41 @@ export var createPlugin = function createPlugin(_ref) {
29
31
 
30
32
  if (allowCompositionInputOverride) {
31
33
  handleDOMEvents.beforeinput = function (view, event) {
32
- if (event.composed && // insertParagraph will be the input type when the enter key is pressed.
33
- event.inputType === 'insertParagraph' && findCodeBlock(view.state, view.state.selection)) {
34
+ var keyEvent = event;
35
+ var eventInputType = keyEvent.inputType;
36
+ var eventText = keyEvent.data;
37
+
38
+ if (browser.ios && event.composed && // insertParagraph will be the input type when the enter key is pressed.
39
+ eventInputType === 'insertParagraph' && findCodeBlock(view.state, view.state.selection)) {
34
40
  event.preventDefault();
41
+ return true;
42
+ } else if (browser.android && event.composed && eventInputType === 'insertCompositionText' && eventText[(eventText === null || eventText === void 0 ? void 0 : eventText.length) - 1] === '\n' && findCodeBlock(view.state, view.state.selection)) {
43
+ var resultingText = event.target.outerText + '\n';
44
+
45
+ if (resultingText.endsWith(eventText)) {
46
+ // End of paragraph
47
+ setTimeout(function () {
48
+ view.someProp('handleKeyDown', function (f) {
49
+ return f(view, new KeyboardEvent('keydown', {
50
+ bubbles: true,
51
+ cancelable: true,
52
+ key: 'Enter',
53
+ code: 'Enter'
54
+ }));
55
+ });
56
+ }, 0);
57
+ } else {
58
+ // Middle of paragraph, end of line
59
+ ignoreFollowingMutations(view.state, view.dispatch);
60
+ }
61
+
35
62
  return true;
36
63
  }
37
64
 
65
+ if (browser.android) {
66
+ resetShouldIgnoreFollowingMutations(view.state, view.dispatch);
67
+ }
68
+
38
69
  return false;
39
70
  };
40
71
  }
@@ -46,7 +77,8 @@ export var createPlugin = function createPlugin(_ref) {
46
77
  return {
47
78
  pos: node ? node.pos : null,
48
79
  contentCopied: false,
49
- isNodeSelected: false
80
+ isNodeSelected: false,
81
+ shouldIgnoreFollowingMutations: false
50
82
  };
51
83
  },
52
84
  apply: function apply(tr, pluginState, _oldState, newState) {
@@ -67,6 +99,10 @@ export var createPlugin = function createPlugin(_ref) {
67
99
  return _objectSpread(_objectSpread({}, pluginState), {}, {
68
100
  contentCopied: meta.data
69
101
  });
102
+ } else if ((meta === null || meta === void 0 ? void 0 : meta.type) === ACTIONS.SET_SHOULD_IGNORE_FOLLOWING_MUTATIONS) {
103
+ return _objectSpread(_objectSpread({}, pluginState), {}, {
104
+ shouldIgnoreFollowingMutations: meta.data
105
+ });
70
106
  }
71
107
 
72
108
  return pluginState;