@atlaskit/editor-core 180.0.0 → 181.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 (750) hide show
  1. package/CHANGELOG.md +117 -0
  2. package/codemods/180.1.0-update-to-editor-migration-component.ts +8 -0
  3. package/codemods/__tests__/rename-editor-to-editor-migration-component.ts +156 -0
  4. package/codemods/migrates/rename-editor-to-editor-migration-component.ts +34 -0
  5. package/dist/cjs/actions/index.js +26 -11
  6. package/dist/cjs/analytics-api/attach-payload-into-transaction.js +1 -1
  7. package/dist/cjs/create-editor/ReactEditorView.js +9 -764
  8. package/dist/cjs/create-editor/ReactEditorViewInternal.js +753 -0
  9. package/dist/cjs/create-editor/ReactEditorViewNext.js +16 -0
  10. package/dist/cjs/create-editor/create-plugins-list.js +31 -3
  11. package/dist/cjs/create-editor/feature-flags-from-props.js +3 -2
  12. package/dist/cjs/create-editor/preset-utils.js +27 -0
  13. package/dist/cjs/editor-next/editor-internal.js +147 -0
  14. package/dist/cjs/editor-next/editor-migration-component.js +51 -0
  15. package/dist/cjs/editor-next/hooks/useEditorMeasuresConstructor.js +36 -0
  16. package/dist/cjs/editor-next/hooks/useMeasureEditorMountTime.js +42 -0
  17. package/dist/cjs/editor-next/hooks/useProviderFactory.js +73 -0
  18. package/dist/cjs/editor-next/index.js +143 -0
  19. package/dist/cjs/editor-next/utils/deprecationWarnings.js +45 -0
  20. package/dist/cjs/editor-next/utils/editorMeasureTTICallback.js +44 -0
  21. package/dist/cjs/editor-next/utils/editorPropTypes.js +36 -0
  22. package/dist/cjs/editor-next/utils/getBaseFontSize.js +17 -0
  23. package/dist/cjs/editor-next/utils/getProvidersFromEditorProps.js +41 -0
  24. package/dist/cjs/editor-next/utils/handleProviders.js +51 -0
  25. package/dist/cjs/editor-next/utils/onEditorCreated.js +28 -0
  26. package/dist/cjs/editor-next/utils/sendDurationAnalytics.js +68 -0
  27. package/dist/cjs/editor-next/utils/trackEditorActions.js +101 -0
  28. package/dist/cjs/editor.js +139 -445
  29. package/dist/cjs/index.js +7 -0
  30. package/dist/cjs/keymaps/consts.js +1 -16
  31. package/dist/cjs/labs/next/internal/hooks/use-analytics/index.js +4 -4
  32. package/dist/cjs/labs/next/internal/hooks/use-editor/create-dispatch-transaction.js +6 -6
  33. package/dist/cjs/labs/next/presets/create-stub-internal-apis.js +117 -0
  34. package/dist/cjs/labs/next/presets/cxhtml.js +56 -55
  35. package/dist/cjs/labs/next/presets/default.js +15 -42
  36. package/dist/cjs/labs/next/presets/mobile.js +76 -89
  37. package/dist/cjs/labs/next/presets/universal.js +337 -255
  38. package/dist/cjs/labs/next/presets/useUniversalPreset.js +36 -0
  39. package/dist/cjs/plugins/alignment/ui/ToolbarAlignment/index.js +48 -13
  40. package/dist/cjs/plugins/analytics/index.js +2 -3
  41. package/dist/cjs/plugins/analytics/plugin.js +11 -6
  42. package/dist/cjs/plugins/analytics/utils.js +0 -11
  43. package/dist/cjs/plugins/annotation/utils.js +2 -36
  44. package/dist/cjs/plugins/base/pm-plugins/filter-steps.js +1 -1
  45. package/dist/cjs/plugins/base/pm-plugins/frozen-editor.js +98 -56
  46. package/dist/cjs/plugins/base/pm-plugins/react-nodeview.js +2 -7
  47. package/dist/cjs/plugins/base/utils/input-latency-tracking.js +24 -25
  48. package/dist/cjs/plugins/block-type/pm-plugins/input-rule.js +0 -10
  49. package/dist/cjs/plugins/block-type/ui/ToolbarBlockType/blocktype-button.js +1 -0
  50. package/dist/cjs/plugins/block-type/ui/ToolbarBlockType/index.js +36 -9
  51. package/dist/cjs/plugins/caption/index.js +0 -7
  52. package/dist/cjs/plugins/card/nodeviews/blockCard.js +9 -3
  53. package/dist/cjs/plugins/card/nodeviews/genericCard.js +16 -2
  54. package/dist/cjs/plugins/card/nodeviews/inlineCard.js +6 -2
  55. package/dist/cjs/plugins/card/pm-plugins/main.js +10 -5
  56. package/dist/cjs/plugins/card/pm-plugins/util/resolve.js +4 -0
  57. package/dist/cjs/plugins/clipboard/pm-plugins/main.js +4 -1
  58. package/dist/cjs/plugins/code-block/pm-plugins/main-state.js +2 -14
  59. package/dist/cjs/plugins/collab-edit/plugin.js +2 -3
  60. package/dist/cjs/plugins/collab-edit/provider/index.js +1 -8
  61. package/dist/cjs/plugins/collab-edit/provider/types.js +1 -12
  62. package/dist/cjs/plugins/context-panel/index.js +1 -6
  63. package/dist/cjs/plugins/data-consumer/index.js +0 -8
  64. package/dist/cjs/plugins/date/utils/internal.js +0 -4
  65. package/dist/cjs/plugins/extension/commands.js +1 -8
  66. package/dist/cjs/plugins/extension/toolbar.js +7 -1
  67. package/dist/cjs/plugins/extension/ui/Extension/Extension/index.js +9 -2
  68. package/dist/cjs/plugins/extension/ui/Extension/Extension/styles.js +2 -2
  69. package/dist/cjs/plugins/extension/ui/Extension/Lozenge.js +1 -0
  70. package/dist/cjs/plugins/feedback-dialog/index.js +1 -4
  71. package/dist/cjs/plugins/find-replace/ui/FindReplaceToolbarButton.js +5 -1
  72. package/dist/cjs/plugins/floating-toolbar/ui/Button.js +9 -3
  73. package/dist/cjs/plugins/floating-toolbar/ui/CheckboxModal.js +5 -3
  74. package/dist/cjs/plugins/floating-toolbar/ui/Dropdown.js +48 -14
  75. package/dist/cjs/plugins/floating-toolbar/ui/EmojiPickerButton.js +2 -9
  76. package/dist/cjs/plugins/floating-toolbar/ui/ExtensionsPlaceholder.js +24 -21
  77. package/dist/cjs/plugins/floating-toolbar/ui/ScrollButtons.js +12 -7
  78. package/dist/cjs/plugins/floating-toolbar/ui/Toolbar.js +32 -5
  79. package/dist/cjs/plugins/floating-toolbar/utils.js +0 -12
  80. package/dist/cjs/plugins/fragment/index.js +0 -8
  81. package/dist/cjs/plugins/fragment/pm-plugins/fragment-consistency.js +1 -0
  82. package/dist/cjs/plugins/help-dialog/commands.js +2 -6
  83. package/dist/cjs/plugins/hyperlink/analytics.js +5 -5
  84. package/dist/cjs/plugins/hyperlink/index.js +1 -1
  85. package/dist/cjs/plugins/hyperlink/pm-plugins/main.js +9 -5
  86. package/dist/cjs/plugins/hyperlink/ui/EditorLinkPicker/index.js +10 -4
  87. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +1 -1
  88. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +4 -3
  89. package/dist/cjs/plugins/image-upload/pm-plugins/main.js +50 -12
  90. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-element-browser.js +1 -0
  91. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu-legacy.js +1 -0
  92. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu.js +3 -0
  93. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/dropdown-button.js +1 -0
  94. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/index.js +22 -0
  95. package/dist/cjs/plugins/layout/styles.js +10 -1
  96. package/dist/cjs/plugins/list/utils/find.js +0 -28
  97. package/dist/cjs/plugins/list/utils/indentation.js +1 -25
  98. package/dist/cjs/plugins/list/utils/node.js +0 -5
  99. package/dist/cjs/plugins/list/utils/selection.js +2 -15
  100. package/dist/cjs/plugins/media/commands/helpers.js +12 -40
  101. package/dist/cjs/plugins/media/commands/index.js +4 -4
  102. package/dist/cjs/plugins/media/nodeviews/mediaGroup.js +14 -12
  103. package/dist/cjs/plugins/media/nodeviews/mediaInline.js +1 -1
  104. package/dist/cjs/plugins/media/nodeviews/mediaNodeUpdater.js +310 -205
  105. package/dist/cjs/plugins/media/nodeviews/mediaSingle.js +1 -1
  106. package/dist/cjs/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +1 -1
  107. package/dist/cjs/plugins/media/pm-plugins/main.js +2 -27
  108. package/dist/cjs/plugins/media/toolbar/filePreviewItem.js +1 -4
  109. package/dist/cjs/plugins/media/utils/media-common.js +1 -20
  110. package/dist/cjs/plugins/mentions/nodeviews/mention.js +100 -16
  111. package/dist/cjs/plugins/mentions/type-ahead/index.js +1 -18
  112. package/dist/cjs/plugins/mentions/ui/InviteItem/index.js +1 -3
  113. package/dist/cjs/plugins/mobile-dimensions/index.js +1 -4
  114. package/dist/cjs/plugins/panel/utils.js +4 -1
  115. package/dist/cjs/plugins/paste/handlers.js +128 -13
  116. package/dist/cjs/plugins/paste/index.js +1 -2
  117. package/dist/cjs/plugins/paste/pm-plugins/analytics.js +133 -88
  118. package/dist/cjs/plugins/paste/pm-plugins/main.js +12 -3
  119. package/dist/cjs/plugins/paste/util/index.js +0 -46
  120. package/dist/cjs/plugins/placeholder-text/index.js +2 -2
  121. package/dist/cjs/plugins/quick-insert/assets/index.js +1 -27
  122. package/dist/cjs/plugins/selection/gap-cursor/actions.js +49 -44
  123. package/dist/cjs/plugins/status/index.js +9 -3
  124. package/dist/cjs/plugins/status/ui/statusPicker.js +8 -2
  125. package/dist/cjs/plugins/status/utils.js +1 -15
  126. package/dist/cjs/plugins/text-color/pm-plugins/main.js +0 -1
  127. package/dist/cjs/plugins/text-color/ui/ToolbarTextColor/index.js +48 -12
  128. package/dist/cjs/plugins/text-formatting/pm-plugins/smart-input-rule.js +8 -2
  129. package/dist/cjs/plugins/text-formatting/ui/Toolbar/dropdown-menu.js +22 -2
  130. package/dist/cjs/plugins/text-formatting/ui/Toolbar/index.js +3 -1
  131. package/dist/cjs/plugins/text-formatting/ui/Toolbar/more-button.js +3 -1
  132. package/dist/cjs/plugins/text-formatting/utils.js +1 -35
  133. package/dist/cjs/plugins/toolbar-lists-indentation/ui/ToolbarDropdown.js +19 -1
  134. package/dist/cjs/plugins/type-ahead/constants.js +1 -7
  135. package/dist/cjs/plugins/type-ahead/index.js +1 -1
  136. package/dist/cjs/plugins/type-ahead/pm-plugins/decorations.js +2 -35
  137. package/dist/cjs/plugins/type-ahead/ui/InputQuery.js +79 -106
  138. package/dist/cjs/plugins/type-ahead/utils.js +3 -22
  139. package/dist/cjs/test-utils.js +4 -12
  140. package/dist/cjs/ui/Appearance/Comment/Toolbar.js +43 -8
  141. package/dist/cjs/ui/ChromeCollapsed/index.js +1 -0
  142. package/dist/cjs/ui/CollapsedEditor/index.js +7 -13
  143. package/dist/cjs/ui/ColorPalette/index.js +18 -0
  144. package/dist/cjs/ui/ColorPickerButton/index.js +73 -7
  145. package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +1 -1
  146. package/dist/cjs/ui/ConfigPanel/Fields/Expand.js +1 -0
  147. package/dist/cjs/ui/ConfigPanel/utils.js +4 -17
  148. package/dist/cjs/ui/ContentStyles/index.js +1 -1
  149. package/dist/cjs/ui/ContextPanel/context.js +13 -12
  150. package/dist/cjs/ui/Dropdown/index.js +7 -2
  151. package/dist/cjs/ui/DropdownMenu/index.js +7 -2
  152. package/dist/cjs/ui/ElementBrowser/ModalElementBrowser.js +1 -1
  153. package/dist/cjs/ui/ElementBrowser/components/CategoryList.js +1 -1
  154. package/dist/cjs/ui/ElementBrowser/components/ElementList/ElementList.js +1 -1
  155. package/dist/cjs/ui/ElementBrowser/components/StatelessElementBrowser.js +1 -1
  156. package/dist/cjs/ui/ElementBrowser/constants.js +1 -3
  157. package/dist/cjs/ui/PanelTextInput/index.js +4 -4
  158. package/dist/cjs/ui/PortalProvider/index.js +5 -5
  159. package/dist/cjs/ui/Resizer/utils.js +1 -3
  160. package/dist/cjs/ui/WidthEmitter/index.js +29 -35
  161. package/dist/cjs/ui/styles.js +3 -7
  162. package/dist/cjs/utils/document.js +15 -0
  163. package/dist/cjs/utils/extensions.js +6 -7
  164. package/dist/cjs/utils/get-editor-plugins.js +30 -0
  165. package/dist/cjs/utils/index.js +9 -269
  166. package/dist/cjs/utils/input-rules.js +1 -15
  167. package/dist/cjs/utils/linking-utils.js +1 -1
  168. package/dist/cjs/utils/performance/components/RenderTracking.js +1 -1
  169. package/dist/cjs/utils/performance/safer-transactions.js +1 -1
  170. package/dist/cjs/utils/prepare-extension-provider.js +25 -0
  171. package/dist/cjs/version-wrapper.js +1 -1
  172. package/dist/cjs/version.json +1 -1
  173. package/dist/es2019/actions/index.js +24 -10
  174. package/dist/es2019/analytics-api/attach-payload-into-transaction.js +1 -1
  175. package/dist/es2019/create-editor/ReactEditorView.js +3 -710
  176. package/dist/es2019/create-editor/ReactEditorViewInternal.js +697 -0
  177. package/dist/es2019/create-editor/ReactEditorViewNext.js +7 -0
  178. package/dist/es2019/create-editor/create-plugins-list.js +26 -3
  179. package/dist/es2019/create-editor/feature-flags-from-props.js +3 -2
  180. package/dist/es2019/create-editor/preset-utils.js +15 -0
  181. package/dist/es2019/editor-next/editor-internal.js +142 -0
  182. package/dist/es2019/editor-next/editor-migration-component.js +27 -0
  183. package/dist/es2019/editor-next/hooks/useEditorMeasuresConstructor.js +30 -0
  184. package/dist/es2019/editor-next/hooks/useMeasureEditorMountTime.js +35 -0
  185. package/dist/es2019/editor-next/hooks/useProviderFactory.js +62 -0
  186. package/dist/es2019/editor-next/index.js +96 -0
  187. package/dist/es2019/editor-next/utils/deprecationWarnings.js +39 -0
  188. package/dist/es2019/editor-next/utils/editorMeasureTTICallback.js +40 -0
  189. package/dist/es2019/editor-next/utils/editorPropTypes.js +29 -0
  190. package/dist/es2019/editor-next/utils/getBaseFontSize.js +11 -0
  191. package/dist/es2019/editor-next/utils/getProvidersFromEditorProps.js +36 -0
  192. package/dist/es2019/editor-next/utils/handleProviders.js +46 -0
  193. package/dist/es2019/editor-next/utils/onEditorCreated.js +21 -0
  194. package/dist/es2019/editor-next/utils/sendDurationAnalytics.js +40 -0
  195. package/dist/es2019/editor-next/utils/trackEditorActions.js +78 -0
  196. package/dist/es2019/editor.js +122 -398
  197. package/dist/es2019/index.js +2 -1
  198. package/dist/es2019/keymaps/consts.js +7 -11
  199. package/dist/es2019/labs/next/internal/hooks/use-analytics/index.js +2 -2
  200. package/dist/es2019/labs/next/internal/hooks/use-editor/create-dispatch-transaction.js +2 -3
  201. package/dist/es2019/labs/next/presets/create-stub-internal-apis.js +105 -0
  202. package/dist/es2019/labs/next/presets/cxhtml.js +56 -53
  203. package/dist/es2019/labs/next/presets/default.js +18 -38
  204. package/dist/es2019/labs/next/presets/mobile.js +88 -88
  205. package/dist/es2019/labs/next/presets/universal.js +347 -263
  206. package/dist/es2019/labs/next/presets/useUniversalPreset.js +25 -0
  207. package/dist/es2019/plugins/alignment/ui/ToolbarAlignment/index.js +41 -12
  208. package/dist/es2019/plugins/analytics/index.js +3 -4
  209. package/dist/es2019/plugins/analytics/plugin.js +8 -2
  210. package/dist/es2019/plugins/analytics/utils.js +0 -4
  211. package/dist/es2019/plugins/annotation/utils.js +2 -30
  212. package/dist/es2019/plugins/base/pm-plugins/filter-steps.js +1 -1
  213. package/dist/es2019/plugins/base/pm-plugins/frozen-editor.js +96 -58
  214. package/dist/es2019/plugins/base/pm-plugins/react-nodeview.js +1 -3
  215. package/dist/es2019/plugins/base/utils/input-latency-tracking.js +23 -23
  216. package/dist/es2019/plugins/block-type/pm-plugins/input-rule.js +3 -9
  217. package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/blocktype-button.js +1 -0
  218. package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/index.js +31 -5
  219. package/dist/es2019/plugins/caption/index.js +0 -2
  220. package/dist/es2019/plugins/card/nodeviews/blockCard.js +10 -3
  221. package/dist/es2019/plugins/card/nodeviews/genericCard.js +16 -2
  222. package/dist/es2019/plugins/card/nodeviews/inlineCard.js +6 -2
  223. package/dist/es2019/plugins/card/pm-plugins/main.js +9 -4
  224. package/dist/es2019/plugins/card/pm-plugins/util/resolve.js +4 -0
  225. package/dist/es2019/plugins/clipboard/pm-plugins/main.js +3 -1
  226. package/dist/es2019/plugins/code-block/pm-plugins/main-state.js +1 -9
  227. package/dist/es2019/plugins/collab-edit/plugin.js +1 -2
  228. package/dist/es2019/plugins/collab-edit/provider/index.js +1 -1
  229. package/dist/es2019/plugins/collab-edit/provider/types.js +1 -10
  230. package/dist/es2019/plugins/context-panel/index.js +0 -3
  231. package/dist/es2019/plugins/data-consumer/index.js +0 -7
  232. package/dist/es2019/plugins/date/utils/internal.js +0 -3
  233. package/dist/es2019/plugins/extension/commands.js +0 -6
  234. package/dist/es2019/plugins/extension/toolbar.js +7 -1
  235. package/dist/es2019/plugins/extension/ui/Extension/Extension/index.js +12 -2
  236. package/dist/es2019/plugins/extension/ui/Extension/Extension/styles.js +3 -0
  237. package/dist/es2019/plugins/extension/ui/Extension/Lozenge.js +1 -0
  238. package/dist/es2019/plugins/feedback-dialog/index.js +0 -2
  239. package/dist/es2019/plugins/find-replace/ui/FindReplaceToolbarButton.js +5 -1
  240. package/dist/es2019/plugins/floating-toolbar/ui/Button.js +9 -3
  241. package/dist/es2019/plugins/floating-toolbar/ui/CheckboxModal.js +5 -3
  242. package/dist/es2019/plugins/floating-toolbar/ui/Dropdown.js +45 -12
  243. package/dist/es2019/plugins/floating-toolbar/ui/EmojiPickerButton.js +1 -11
  244. package/dist/es2019/plugins/floating-toolbar/ui/ExtensionsPlaceholder.js +3 -2
  245. package/dist/es2019/plugins/floating-toolbar/ui/ScrollButtons.js +12 -7
  246. package/dist/es2019/plugins/floating-toolbar/ui/Toolbar.js +29 -1
  247. package/dist/es2019/plugins/floating-toolbar/utils.js +0 -10
  248. package/dist/es2019/plugins/fragment/index.js +0 -7
  249. package/dist/es2019/plugins/fragment/pm-plugins/fragment-consistency.js +1 -0
  250. package/dist/es2019/plugins/help-dialog/commands.js +1 -2
  251. package/dist/es2019/plugins/hyperlink/analytics.js +1 -1
  252. package/dist/es2019/plugins/hyperlink/index.js +1 -1
  253. package/dist/es2019/plugins/hyperlink/pm-plugins/main.js +8 -4
  254. package/dist/es2019/plugins/hyperlink/ui/EditorLinkPicker/index.js +9 -3
  255. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +1 -1
  256. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +3 -2
  257. package/dist/es2019/plugins/image-upload/pm-plugins/main.js +47 -5
  258. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-element-browser.js +1 -0
  259. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu-legacy.js +1 -0
  260. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu.js +3 -0
  261. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/dropdown-button.js +1 -0
  262. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/index.js +24 -0
  263. package/dist/es2019/plugins/layout/styles.js +12 -4
  264. package/dist/es2019/plugins/list/utils/find.js +0 -27
  265. package/dist/es2019/plugins/list/utils/indentation.js +0 -23
  266. package/dist/es2019/plugins/list/utils/node.js +1 -4
  267. package/dist/es2019/plugins/list/utils/selection.js +2 -15
  268. package/dist/es2019/plugins/media/commands/helpers.js +9 -35
  269. package/dist/es2019/plugins/media/commands/index.js +1 -1
  270. package/dist/es2019/plugins/media/nodeviews/mediaGroup.js +3 -3
  271. package/dist/es2019/plugins/media/nodeviews/mediaInline.js +1 -1
  272. package/dist/es2019/plugins/media/nodeviews/mediaNodeUpdater.js +70 -37
  273. package/dist/es2019/plugins/media/nodeviews/mediaSingle.js +1 -1
  274. package/dist/es2019/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +1 -1
  275. package/dist/es2019/plugins/media/pm-plugins/main.js +3 -30
  276. package/dist/es2019/plugins/media/toolbar/filePreviewItem.js +1 -4
  277. package/dist/es2019/plugins/media/utils/media-common.js +1 -19
  278. package/dist/es2019/plugins/mentions/nodeviews/mention.js +64 -16
  279. package/dist/es2019/plugins/mentions/type-ahead/index.js +1 -14
  280. package/dist/es2019/plugins/mentions/ui/InviteItem/index.js +1 -2
  281. package/dist/es2019/plugins/mobile-dimensions/index.js +0 -3
  282. package/dist/es2019/plugins/panel/utils.js +4 -1
  283. package/dist/es2019/plugins/paste/handlers.js +127 -5
  284. package/dist/es2019/plugins/paste/index.js +1 -2
  285. package/dist/es2019/plugins/paste/pm-plugins/analytics.js +131 -93
  286. package/dist/es2019/plugins/paste/pm-plugins/main.js +13 -4
  287. package/dist/es2019/plugins/paste/util/index.js +5 -45
  288. package/dist/es2019/plugins/placeholder-text/index.js +1 -1
  289. package/dist/es2019/plugins/quick-insert/assets/index.js +0 -8
  290. package/dist/es2019/plugins/selection/gap-cursor/actions.js +56 -56
  291. package/dist/es2019/plugins/status/index.js +8 -2
  292. package/dist/es2019/plugins/status/ui/statusPicker.js +8 -2
  293. package/dist/es2019/plugins/status/utils.js +1 -11
  294. package/dist/es2019/plugins/text-color/pm-plugins/main.js +1 -1
  295. package/dist/es2019/plugins/text-color/ui/ToolbarTextColor/index.js +48 -12
  296. package/dist/es2019/plugins/text-formatting/pm-plugins/smart-input-rule.js +8 -2
  297. package/dist/es2019/plugins/text-formatting/ui/Toolbar/dropdown-menu.js +20 -3
  298. package/dist/es2019/plugins/text-formatting/ui/Toolbar/index.js +4 -2
  299. package/dist/es2019/plugins/text-formatting/ui/Toolbar/more-button.js +3 -1
  300. package/dist/es2019/plugins/text-formatting/utils.js +0 -27
  301. package/dist/es2019/plugins/toolbar-lists-indentation/ui/ToolbarDropdown.js +16 -1
  302. package/dist/es2019/plugins/type-ahead/constants.js +0 -5
  303. package/dist/es2019/plugins/type-ahead/index.js +1 -1
  304. package/dist/es2019/plugins/type-ahead/pm-plugins/decorations.js +0 -35
  305. package/dist/es2019/plugins/type-ahead/ui/InputQuery.js +73 -92
  306. package/dist/es2019/plugins/type-ahead/utils.js +0 -23
  307. package/dist/es2019/test-utils.js +4 -7
  308. package/dist/es2019/ui/Appearance/Comment/Toolbar.js +40 -6
  309. package/dist/es2019/ui/ChromeCollapsed/index.js +1 -0
  310. package/dist/es2019/ui/CollapsedEditor/index.js +7 -11
  311. package/dist/es2019/ui/ColorPalette/index.js +2 -1
  312. package/dist/es2019/ui/ColorPickerButton/index.js +66 -9
  313. package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +1 -1
  314. package/dist/es2019/ui/ConfigPanel/Fields/Expand.js +1 -0
  315. package/dist/es2019/ui/ConfigPanel/utils.js +0 -6
  316. package/dist/es2019/ui/ContentStyles/index.js +1 -1
  317. package/dist/es2019/ui/ContextPanel/context.js +5 -4
  318. package/dist/es2019/ui/Dropdown/index.js +5 -2
  319. package/dist/es2019/ui/DropdownMenu/index.js +5 -2
  320. package/dist/es2019/ui/ElementBrowser/ModalElementBrowser.js +1 -1
  321. package/dist/es2019/ui/ElementBrowser/components/CategoryList.js +1 -1
  322. package/dist/es2019/ui/ElementBrowser/components/ElementList/ElementList.js +1 -1
  323. package/dist/es2019/ui/ElementBrowser/components/StatelessElementBrowser.js +1 -1
  324. package/dist/es2019/ui/ElementBrowser/constants.js +0 -1
  325. package/dist/es2019/ui/PanelTextInput/index.js +3 -3
  326. package/dist/es2019/ui/PortalProvider/index.js +1 -1
  327. package/dist/es2019/ui/Resizer/utils.js +0 -1
  328. package/dist/es2019/ui/WidthEmitter/index.js +25 -29
  329. package/dist/es2019/ui/styles.js +0 -6
  330. package/dist/es2019/utils/document.js +11 -1
  331. package/dist/es2019/utils/extensions.js +1 -3
  332. package/dist/es2019/utils/get-editor-plugins.js +23 -0
  333. package/dist/es2019/utils/index.js +13 -199
  334. package/dist/es2019/utils/input-rules.js +0 -14
  335. package/dist/es2019/utils/linking-utils.js +1 -1
  336. package/dist/es2019/utils/performance/components/RenderTracking.js +1 -1
  337. package/dist/es2019/utils/performance/safer-transactions.js +1 -1
  338. package/dist/es2019/utils/prepare-extension-provider.js +13 -0
  339. package/dist/es2019/version-wrapper.js +1 -1
  340. package/dist/es2019/version.json +1 -1
  341. package/dist/esm/actions/index.js +24 -10
  342. package/dist/esm/analytics-api/attach-payload-into-transaction.js +1 -1
  343. package/dist/esm/create-editor/ReactEditorView.js +9 -765
  344. package/dist/esm/create-editor/ReactEditorViewInternal.js +747 -0
  345. package/dist/esm/create-editor/ReactEditorViewNext.js +7 -0
  346. package/dist/esm/create-editor/create-plugins-list.js +30 -3
  347. package/dist/esm/create-editor/feature-flags-from-props.js +3 -2
  348. package/dist/esm/create-editor/preset-utils.js +21 -0
  349. package/dist/esm/editor-next/editor-internal.js +141 -0
  350. package/dist/esm/editor-next/editor-migration-component.js +44 -0
  351. package/dist/esm/editor-next/hooks/useEditorMeasuresConstructor.js +30 -0
  352. package/dist/esm/editor-next/hooks/useMeasureEditorMountTime.js +35 -0
  353. package/dist/esm/editor-next/hooks/useProviderFactory.js +66 -0
  354. package/dist/esm/editor-next/index.js +138 -0
  355. package/dist/esm/editor-next/utils/deprecationWarnings.js +39 -0
  356. package/dist/esm/editor-next/utils/editorMeasureTTICallback.js +38 -0
  357. package/dist/esm/editor-next/utils/editorPropTypes.js +28 -0
  358. package/dist/esm/editor-next/utils/getBaseFontSize.js +11 -0
  359. package/dist/esm/editor-next/utils/getProvidersFromEditorProps.js +35 -0
  360. package/dist/esm/editor-next/utils/handleProviders.js +45 -0
  361. package/dist/esm/editor-next/utils/onEditorCreated.js +21 -0
  362. package/dist/esm/editor-next/utils/sendDurationAnalytics.js +61 -0
  363. package/dist/esm/editor-next/utils/trackEditorActions.js +94 -0
  364. package/dist/esm/editor.js +139 -442
  365. package/dist/esm/index.js +2 -1
  366. package/dist/esm/keymaps/consts.js +7 -11
  367. package/dist/esm/labs/next/internal/hooks/use-analytics/index.js +2 -2
  368. package/dist/esm/labs/next/internal/hooks/use-editor/create-dispatch-transaction.js +2 -3
  369. package/dist/esm/labs/next/presets/create-stub-internal-apis.js +110 -0
  370. package/dist/esm/labs/next/presets/cxhtml.js +56 -55
  371. package/dist/esm/labs/next/presets/default.js +18 -41
  372. package/dist/esm/labs/next/presets/mobile.js +88 -90
  373. package/dist/esm/labs/next/presets/universal.js +337 -255
  374. package/dist/esm/labs/next/presets/useUniversalPreset.js +29 -0
  375. package/dist/esm/plugins/alignment/ui/ToolbarAlignment/index.js +48 -13
  376. package/dist/esm/plugins/analytics/index.js +3 -4
  377. package/dist/esm/plugins/analytics/plugin.js +7 -2
  378. package/dist/esm/plugins/analytics/utils.js +0 -9
  379. package/dist/esm/plugins/annotation/utils.js +2 -32
  380. package/dist/esm/plugins/base/pm-plugins/filter-steps.js +1 -1
  381. package/dist/esm/plugins/base/pm-plugins/frozen-editor.js +98 -56
  382. package/dist/esm/plugins/base/pm-plugins/react-nodeview.js +1 -5
  383. package/dist/esm/plugins/base/utils/input-latency-tracking.js +24 -25
  384. package/dist/esm/plugins/block-type/pm-plugins/input-rule.js +3 -9
  385. package/dist/esm/plugins/block-type/ui/ToolbarBlockType/blocktype-button.js +1 -0
  386. package/dist/esm/plugins/block-type/ui/ToolbarBlockType/index.js +36 -9
  387. package/dist/esm/plugins/caption/index.js +0 -2
  388. package/dist/esm/plugins/card/nodeviews/blockCard.js +9 -3
  389. package/dist/esm/plugins/card/nodeviews/genericCard.js +16 -2
  390. package/dist/esm/plugins/card/nodeviews/inlineCard.js +6 -2
  391. package/dist/esm/plugins/card/pm-plugins/main.js +10 -5
  392. package/dist/esm/plugins/card/pm-plugins/util/resolve.js +4 -0
  393. package/dist/esm/plugins/clipboard/pm-plugins/main.js +4 -1
  394. package/dist/esm/plugins/code-block/pm-plugins/main-state.js +0 -10
  395. package/dist/esm/plugins/collab-edit/plugin.js +1 -2
  396. package/dist/esm/plugins/collab-edit/provider/index.js +1 -1
  397. package/dist/esm/plugins/collab-edit/provider/types.js +1 -10
  398. package/dist/esm/plugins/context-panel/index.js +0 -3
  399. package/dist/esm/plugins/data-consumer/index.js +0 -7
  400. package/dist/esm/plugins/date/utils/internal.js +0 -3
  401. package/dist/esm/plugins/extension/commands.js +0 -6
  402. package/dist/esm/plugins/extension/toolbar.js +7 -1
  403. package/dist/esm/plugins/extension/ui/Extension/Extension/index.js +9 -2
  404. package/dist/esm/plugins/extension/ui/Extension/Extension/styles.js +2 -2
  405. package/dist/esm/plugins/extension/ui/Extension/Lozenge.js +1 -0
  406. package/dist/esm/plugins/feedback-dialog/index.js +0 -2
  407. package/dist/esm/plugins/find-replace/ui/FindReplaceToolbarButton.js +5 -1
  408. package/dist/esm/plugins/floating-toolbar/ui/Button.js +9 -3
  409. package/dist/esm/plugins/floating-toolbar/ui/CheckboxModal.js +5 -3
  410. package/dist/esm/plugins/floating-toolbar/ui/Dropdown.js +48 -14
  411. package/dist/esm/plugins/floating-toolbar/ui/EmojiPickerButton.js +2 -9
  412. package/dist/esm/plugins/floating-toolbar/ui/ExtensionsPlaceholder.js +24 -21
  413. package/dist/esm/plugins/floating-toolbar/ui/ScrollButtons.js +12 -7
  414. package/dist/esm/plugins/floating-toolbar/ui/Toolbar.js +32 -5
  415. package/dist/esm/plugins/floating-toolbar/utils.js +0 -10
  416. package/dist/esm/plugins/fragment/index.js +0 -7
  417. package/dist/esm/plugins/fragment/pm-plugins/fragment-consistency.js +1 -0
  418. package/dist/esm/plugins/help-dialog/commands.js +0 -3
  419. package/dist/esm/plugins/hyperlink/analytics.js +1 -1
  420. package/dist/esm/plugins/hyperlink/index.js +1 -1
  421. package/dist/esm/plugins/hyperlink/pm-plugins/main.js +9 -5
  422. package/dist/esm/plugins/hyperlink/ui/EditorLinkPicker/index.js +10 -4
  423. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +1 -1
  424. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +3 -2
  425. package/dist/esm/plugins/image-upload/pm-plugins/main.js +51 -12
  426. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-element-browser.js +1 -0
  427. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu-legacy.js +1 -0
  428. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu.js +3 -0
  429. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/dropdown-button.js +1 -0
  430. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/index.js +22 -0
  431. package/dist/esm/plugins/layout/styles.js +11 -2
  432. package/dist/esm/plugins/list/utils/find.js +0 -27
  433. package/dist/esm/plugins/list/utils/indentation.js +0 -23
  434. package/dist/esm/plugins/list/utils/node.js +1 -4
  435. package/dist/esm/plugins/list/utils/selection.js +2 -12
  436. package/dist/esm/plugins/media/commands/helpers.js +9 -35
  437. package/dist/esm/plugins/media/commands/index.js +1 -1
  438. package/dist/esm/plugins/media/nodeviews/mediaGroup.js +14 -12
  439. package/dist/esm/plugins/media/nodeviews/mediaInline.js +1 -1
  440. package/dist/esm/plugins/media/nodeviews/mediaNodeUpdater.js +311 -206
  441. package/dist/esm/plugins/media/nodeviews/mediaSingle.js +1 -1
  442. package/dist/esm/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +1 -1
  443. package/dist/esm/plugins/media/pm-plugins/main.js +3 -28
  444. package/dist/esm/plugins/media/toolbar/filePreviewItem.js +1 -4
  445. package/dist/esm/plugins/media/utils/media-common.js +1 -17
  446. package/dist/esm/plugins/mentions/nodeviews/mention.js +97 -16
  447. package/dist/esm/plugins/mentions/type-ahead/index.js +1 -18
  448. package/dist/esm/plugins/mentions/ui/InviteItem/index.js +1 -2
  449. package/dist/esm/plugins/mobile-dimensions/index.js +0 -3
  450. package/dist/esm/plugins/panel/utils.js +4 -1
  451. package/dist/esm/plugins/paste/handlers.js +127 -13
  452. package/dist/esm/plugins/paste/index.js +1 -2
  453. package/dist/esm/plugins/paste/pm-plugins/analytics.js +130 -86
  454. package/dist/esm/plugins/paste/pm-plugins/main.js +13 -4
  455. package/dist/esm/plugins/paste/util/index.js +5 -45
  456. package/dist/esm/plugins/placeholder-text/index.js +2 -2
  457. package/dist/esm/plugins/quick-insert/assets/index.js +0 -20
  458. package/dist/esm/plugins/selection/gap-cursor/actions.js +52 -45
  459. package/dist/esm/plugins/status/index.js +9 -3
  460. package/dist/esm/plugins/status/ui/statusPicker.js +8 -2
  461. package/dist/esm/plugins/status/utils.js +1 -13
  462. package/dist/esm/plugins/text-color/pm-plugins/main.js +1 -1
  463. package/dist/esm/plugins/text-color/ui/ToolbarTextColor/index.js +48 -12
  464. package/dist/esm/plugins/text-formatting/pm-plugins/smart-input-rule.js +8 -2
  465. package/dist/esm/plugins/text-formatting/ui/Toolbar/dropdown-menu.js +23 -3
  466. package/dist/esm/plugins/text-formatting/ui/Toolbar/index.js +4 -2
  467. package/dist/esm/plugins/text-formatting/ui/Toolbar/more-button.js +3 -1
  468. package/dist/esm/plugins/text-formatting/utils.js +0 -29
  469. package/dist/esm/plugins/toolbar-lists-indentation/ui/ToolbarDropdown.js +19 -1
  470. package/dist/esm/plugins/type-ahead/constants.js +0 -5
  471. package/dist/esm/plugins/type-ahead/index.js +1 -1
  472. package/dist/esm/plugins/type-ahead/pm-plugins/decorations.js +0 -31
  473. package/dist/esm/plugins/type-ahead/ui/InputQuery.js +79 -106
  474. package/dist/esm/plugins/type-ahead/utils.js +2 -20
  475. package/dist/esm/test-utils.js +4 -7
  476. package/dist/esm/ui/Appearance/Comment/Toolbar.js +41 -6
  477. package/dist/esm/ui/ChromeCollapsed/index.js +1 -0
  478. package/dist/esm/ui/CollapsedEditor/index.js +7 -13
  479. package/dist/esm/ui/ColorPalette/index.js +2 -1
  480. package/dist/esm/ui/ColorPickerButton/index.js +74 -8
  481. package/dist/esm/ui/ConfigPanel/ConfigPanel.js +1 -1
  482. package/dist/esm/ui/ConfigPanel/Fields/Expand.js +1 -0
  483. package/dist/esm/ui/ConfigPanel/utils.js +3 -14
  484. package/dist/esm/ui/ContentStyles/index.js +1 -1
  485. package/dist/esm/ui/ContextPanel/context.js +8 -8
  486. package/dist/esm/ui/Dropdown/index.js +7 -2
  487. package/dist/esm/ui/DropdownMenu/index.js +7 -2
  488. package/dist/esm/ui/ElementBrowser/ModalElementBrowser.js +1 -1
  489. package/dist/esm/ui/ElementBrowser/components/CategoryList.js +1 -1
  490. package/dist/esm/ui/ElementBrowser/components/ElementList/ElementList.js +1 -1
  491. package/dist/esm/ui/ElementBrowser/components/StatelessElementBrowser.js +1 -1
  492. package/dist/esm/ui/ElementBrowser/constants.js +0 -1
  493. package/dist/esm/ui/PanelTextInput/index.js +4 -4
  494. package/dist/esm/ui/PortalProvider/index.js +1 -1
  495. package/dist/esm/ui/Resizer/utils.js +0 -1
  496. package/dist/esm/ui/WidthEmitter/index.js +28 -37
  497. package/dist/esm/ui/styles.js +2 -5
  498. package/dist/esm/utils/document.js +15 -1
  499. package/dist/esm/utils/extensions.js +1 -3
  500. package/dist/esm/utils/get-editor-plugins.js +23 -0
  501. package/dist/esm/utils/index.js +13 -196
  502. package/dist/esm/utils/input-rules.js +0 -13
  503. package/dist/esm/utils/linking-utils.js +1 -1
  504. package/dist/esm/utils/performance/components/RenderTracking.js +1 -1
  505. package/dist/esm/utils/performance/safer-transactions.js +1 -1
  506. package/dist/esm/utils/prepare-extension-provider.js +17 -0
  507. package/dist/esm/version-wrapper.js +1 -1
  508. package/dist/esm/version.json +1 -1
  509. package/dist/types/actions/index.d.ts +5 -5
  510. package/dist/types/create-editor/ReactEditorView.d.ts +5 -110
  511. package/dist/types/create-editor/ReactEditorViewInternal.d.ts +114 -0
  512. package/dist/types/create-editor/ReactEditorViewNext.d.ts +8 -0
  513. package/dist/types/create-editor/create-plugins-list.d.ts +3 -5
  514. package/dist/types/create-editor/preset-utils.d.ts +2 -0
  515. package/dist/types/editor-next/editor-internal.d.ts +44 -0
  516. package/dist/types/editor-next/editor-migration-component.d.ts +5 -0
  517. package/dist/types/editor-next/hooks/useEditorMeasuresConstructor.d.ts +17 -0
  518. package/dist/types/editor-next/hooks/useMeasureEditorMountTime.d.ts +13 -0
  519. package/dist/types/editor-next/hooks/useProviderFactory.d.ts +21 -0
  520. package/dist/types/editor-next/index.d.ts +34 -0
  521. package/dist/types/editor-next/utils/deprecationWarnings.d.ts +2 -0
  522. package/dist/types/editor-next/utils/editorMeasureTTICallback.d.ts +5 -0
  523. package/dist/types/editor-next/utils/editorPropTypes.d.ts +19 -0
  524. package/dist/types/editor-next/utils/getBaseFontSize.d.ts +6 -0
  525. package/dist/types/editor-next/utils/getProvidersFromEditorProps.d.ts +9 -0
  526. package/dist/types/editor-next/utils/handleProviders.d.ts +14 -0
  527. package/dist/types/editor-next/utils/onEditorCreated.d.ts +12 -0
  528. package/dist/types/editor-next/utils/sendDurationAnalytics.d.ts +15 -0
  529. package/dist/types/editor-next/utils/trackEditorActions.d.ts +29 -0
  530. package/dist/types/editor.d.ts +50 -25
  531. package/dist/types/index.d.ts +1 -0
  532. package/dist/types/keymaps/consts.d.ts +0 -11
  533. package/dist/types/labs/next/internal/hooks/use-analytics/index.d.ts +1 -1
  534. package/dist/types/labs/next/presets/create-stub-internal-apis.d.ts +16 -0
  535. package/dist/types/labs/next/presets/cxhtml.d.ts +33 -1
  536. package/dist/types/labs/next/presets/default.d.ts +67 -10
  537. package/dist/types/labs/next/presets/mobile.d.ts +33 -1
  538. package/dist/types/labs/next/presets/universal.d.ts +5 -13
  539. package/dist/types/labs/next/presets/useUniversalPreset.d.ts +7 -0
  540. package/dist/types/nodeviews/context-adapter.d.ts +0 -1
  541. package/dist/types/nodeviews/index.d.ts +0 -1
  542. package/dist/types/plugins/alignment/index.d.ts +1 -1
  543. package/dist/types/plugins/alignment/pm-plugins/types.d.ts +0 -11
  544. package/dist/types/plugins/alignment/ui/ToolbarAlignment/index.d.ts +3 -1
  545. package/dist/types/plugins/analytics/index.d.ts +3 -6
  546. package/dist/types/plugins/analytics/plugin.d.ts +3 -1
  547. package/dist/types/plugins/analytics/utils.d.ts +2 -3
  548. package/dist/types/plugins/annotation/index.d.ts +3 -1
  549. package/dist/types/plugins/annotation/utils.d.ts +0 -17
  550. package/dist/types/plugins/avatar-group/index.d.ts +3 -1
  551. package/dist/types/plugins/base/index.d.ts +3 -1
  552. package/dist/types/plugins/base/pm-plugins/filter-steps.d.ts +1 -1
  553. package/dist/types/plugins/base/pm-plugins/react-nodeview.d.ts +2 -3
  554. package/dist/types/plugins/base/utils/input-latency-tracking.d.ts +1 -3
  555. package/dist/types/plugins/before-primaryToolbar/index.d.ts +3 -1
  556. package/dist/types/plugins/block-type/index.d.ts +3 -1
  557. package/dist/types/plugins/block-type/pm-plugins/input-rule.d.ts +2 -6
  558. package/dist/types/plugins/block-type/ui/ToolbarBlockType/blocktype-button.d.ts +1 -0
  559. package/dist/types/plugins/block-type/ui/ToolbarBlockType/index.d.ts +1 -0
  560. package/dist/types/plugins/breakout/index.d.ts +3 -1
  561. package/dist/types/plugins/caption/index.d.ts +0 -2
  562. package/dist/types/plugins/card/index.d.ts +3 -1
  563. package/dist/types/plugins/card/nodeviews/blockCard.d.ts +2 -10
  564. package/dist/types/plugins/card/nodeviews/genericCard.d.ts +2 -1
  565. package/dist/types/plugins/card/nodeviews/inlineCard.d.ts +1 -1
  566. package/dist/types/plugins/card/pm-plugins/util/state.d.ts +1 -0
  567. package/dist/types/plugins/card/types.d.ts +3 -0
  568. package/dist/types/plugins/code-bidi-warning/index.d.ts +3 -1
  569. package/dist/types/plugins/code-block/actions.d.ts +0 -4
  570. package/dist/types/plugins/code-block/index.d.ts +3 -1
  571. package/dist/types/plugins/code-block/pm-plugins/main-state.d.ts +0 -3
  572. package/dist/types/plugins/collab-edit/index.d.ts +3 -1
  573. package/dist/types/plugins/collab-edit/provider/index.d.ts +1 -2
  574. package/dist/types/plugins/collab-edit/provider/types.d.ts +1 -36
  575. package/dist/types/plugins/context-panel/index.d.ts +3 -4
  576. package/dist/types/plugins/data-consumer/index.d.ts +0 -2
  577. package/dist/types/plugins/date/utils/internal.d.ts +0 -1
  578. package/dist/types/plugins/emoji/index.d.ts +3 -1
  579. package/dist/types/plugins/expand/index.d.ts +3 -1
  580. package/dist/types/plugins/extension/commands.d.ts +0 -1
  581. package/dist/types/plugins/extension/index.d.ts +3 -1
  582. package/dist/types/plugins/extension/nodeviews/extension.d.ts +0 -5
  583. package/dist/types/plugins/extension/toolbar.d.ts +5 -0
  584. package/dist/types/plugins/feature-flags-context/index.d.ts +3 -1
  585. package/dist/types/plugins/feedback-dialog/index.d.ts +3 -3
  586. package/dist/types/plugins/find-replace/index.d.ts +3 -1
  587. package/dist/types/plugins/floating-toolbar/ui/Button.d.ts +4 -1
  588. package/dist/types/plugins/floating-toolbar/ui/Dropdown.d.ts +6 -2
  589. package/dist/types/plugins/floating-toolbar/utils.d.ts +0 -2
  590. package/dist/types/plugins/fragment/index.d.ts +0 -2
  591. package/dist/types/plugins/grid/index.d.ts +3 -1
  592. package/dist/types/plugins/help-dialog/commands.d.ts +0 -1
  593. package/dist/types/plugins/help-dialog/index.d.ts +3 -1
  594. package/dist/types/plugins/history/actions.d.ts +1 -2
  595. package/dist/types/plugins/hyperlink/analytics.d.ts +1 -1
  596. package/dist/types/plugins/hyperlink/index.d.ts +3 -1
  597. package/dist/types/plugins/hyperlink/pm-plugins/main.d.ts +4 -2
  598. package/dist/types/plugins/hyperlink/types.d.ts +3 -1
  599. package/dist/types/plugins/hyperlink/ui/EditorLinkPicker/index.d.ts +3 -1
  600. package/dist/types/plugins/insert-block/index.d.ts +3 -1
  601. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-element-browser.d.ts +1 -0
  602. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu-legacy.d.ts +1 -0
  603. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu.d.ts +1 -0
  604. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/dropdown-button.d.ts +1 -0
  605. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/index.d.ts +1 -0
  606. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/types.d.ts +1 -0
  607. package/dist/types/plugins/layout/index.d.ts +3 -1
  608. package/dist/types/plugins/layout/styles.d.ts +2 -1
  609. package/dist/types/plugins/list/index.d.ts +3 -1
  610. package/dist/types/plugins/list/utils/find.d.ts +0 -1
  611. package/dist/types/plugins/list/utils/indentation.d.ts +0 -1
  612. package/dist/types/plugins/list/utils/node.d.ts +0 -2
  613. package/dist/types/plugins/list/utils/selection.d.ts +0 -3
  614. package/dist/types/plugins/max-content-size/index.d.ts +3 -1
  615. package/dist/types/plugins/media/commands/helpers.d.ts +5 -12
  616. package/dist/types/plugins/media/commands/index.d.ts +1 -1
  617. package/dist/types/plugins/media/index.d.ts +3 -1
  618. package/dist/types/plugins/media/nodeviews/__mocks__/mediaNodeUpdater.d.ts +3 -1
  619. package/dist/types/plugins/media/nodeviews/mediaNodeUpdater.d.ts +4 -1
  620. package/dist/types/plugins/media/pm-plugins/main.d.ts +1 -4
  621. package/dist/types/plugins/media/pm-plugins/types.d.ts +1 -4
  622. package/dist/types/plugins/media/utils/media-common.d.ts +0 -5
  623. package/dist/types/plugins/mentions/index.d.ts +3 -1
  624. package/dist/types/plugins/mentions/types.d.ts +1 -2
  625. package/dist/types/plugins/mentions/ui/InviteItem/index.d.ts +2 -3
  626. package/dist/types/plugins/mentions/ui/InviteItem/styles.d.ts +0 -6
  627. package/dist/types/plugins/mentions/ui/ToolbarMention/index.d.ts +1 -4
  628. package/dist/types/plugins/mobile-dimensions/index.d.ts +0 -1
  629. package/dist/types/plugins/panel/index.d.ts +3 -1
  630. package/dist/types/plugins/paste/handlers.d.ts +2 -1
  631. package/dist/types/plugins/paste/index.d.ts +3 -2
  632. package/dist/types/plugins/paste/pm-plugins/analytics.d.ts +10 -4
  633. package/dist/types/plugins/paste/util/index.d.ts +0 -6
  634. package/dist/types/plugins/placeholder/index.d.ts +3 -1
  635. package/dist/types/plugins/placeholder-text/index.d.ts +3 -1
  636. package/dist/types/plugins/quick-insert/assets/index.d.ts +0 -2
  637. package/dist/types/plugins/quick-insert/index.d.ts +3 -1
  638. package/dist/types/plugins/save-on-enter/index.d.ts +3 -1
  639. package/dist/types/plugins/selection/index.d.ts +3 -1
  640. package/dist/types/plugins/status/index.d.ts +3 -1
  641. package/dist/types/plugins/status/ui/statusPicker.d.ts +3 -0
  642. package/dist/types/plugins/status/utils.d.ts +0 -3
  643. package/dist/types/plugins/submit-editor/index.d.ts +3 -1
  644. package/dist/types/plugins/tasks-and-decisions/index.d.ts +3 -1
  645. package/dist/types/plugins/tasks-and-decisions/pm-plugins/main.d.ts +0 -6
  646. package/dist/types/plugins/text-color/index.d.ts +3 -1
  647. package/dist/types/plugins/text-color/pm-plugins/main.d.ts +2 -12
  648. package/dist/types/plugins/text-color/ui/ToolbarTextColor/index.d.ts +2 -0
  649. package/dist/types/plugins/text-formatting/index.d.ts +3 -1
  650. package/dist/types/plugins/text-formatting/pm-plugins/clear-formatting.d.ts +0 -1
  651. package/dist/types/plugins/text-formatting/ui/Toolbar/more-button.d.ts +2 -1
  652. package/dist/types/plugins/text-formatting/utils.d.ts +0 -5
  653. package/dist/types/plugins/toolbar-lists-indentation/index.d.ts +3 -1
  654. package/dist/types/plugins/type-ahead/constants.d.ts +0 -4
  655. package/dist/types/plugins/type-ahead/index.d.ts +3 -1
  656. package/dist/types/plugins/type-ahead/pm-plugins/decorations.d.ts +0 -10
  657. package/dist/types/plugins/type-ahead/utils.d.ts +1 -2
  658. package/dist/types/test-utils.d.ts +4 -5
  659. package/dist/types/types/editor-appearance-component.d.ts +2 -2
  660. package/dist/types/types/editor-props.d.ts +55 -42
  661. package/dist/types/types/get-editor-props.d.ts +12 -0
  662. package/dist/types/types/performance-tracking.d.ts +10 -0
  663. package/dist/types/ui/Appearance/Chromeless.d.ts +0 -5
  664. package/dist/types/ui/Appearance/Comment/Comment.d.ts +0 -7
  665. package/dist/types/ui/Appearance/Comment/Toolbar.d.ts +3 -2
  666. package/dist/types/ui/Appearance/FullPage/MainToolbar.d.ts +0 -4
  667. package/dist/types/ui/Appearance/FullPage/StyledComponents.d.ts +29 -29
  668. package/dist/types/ui/AppearanceComponents/Mobile.d.ts +2 -5
  669. package/dist/types/ui/CollapsedEditor/index.d.ts +4 -3
  670. package/dist/types/ui/ColorPalette/Palettes/index.d.ts +1 -1
  671. package/dist/types/ui/ColorPalette/Palettes/type.d.ts +1 -1
  672. package/dist/types/ui/ColorPalette/index.d.ts +2 -1
  673. package/dist/types/ui/ColorPickerButton/index.d.ts +5 -2
  674. package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +1 -1
  675. package/dist/types/ui/ConfigPanel/types.d.ts +0 -3
  676. package/dist/types/ui/ConfigPanel/utils.d.ts +2 -3
  677. package/dist/types/ui/ContentStyles/index.d.ts +2 -2
  678. package/dist/types/ui/ContextPanel/context.d.ts +2 -1
  679. package/dist/types/ui/ElementBrowser/ModalElementBrowser.d.ts +0 -3
  680. package/dist/types/ui/ElementBrowser/constants.d.ts +0 -1
  681. package/dist/types/ui/ElementBrowser/types.d.ts +0 -5
  682. package/dist/types/ui/PanelTextInput/index.d.ts +1 -1
  683. package/dist/types/ui/PortalProvider/index.d.ts +1 -1
  684. package/dist/types/ui/Resizer/utils.d.ts +0 -1
  685. package/dist/types/ui/styles.d.ts +0 -1
  686. package/dist/types/utils/document.d.ts +4 -3
  687. package/dist/types/utils/get-editor-plugins.d.ts +10 -0
  688. package/dist/types/utils/index.d.ts +6 -65
  689. package/dist/types/utils/input-rules.d.ts +1 -2
  690. package/dist/types/utils/linking-utils.d.ts +1 -1
  691. package/dist/types/utils/performance/components/RenderTracking.d.ts +1 -1
  692. package/dist/types/utils/performance/instrumented-plugin.d.ts +1 -1
  693. package/dist/types/utils/performance/safer-transactions.d.ts +1 -1
  694. package/dist/types/utils/prepare-extension-provider.d.ts +5 -0
  695. package/dist/types/utils/table.d.ts +0 -1
  696. package/docs/0-intro.tsx +0 -1
  697. package/package.json +37 -37
  698. package/report.api.md +307 -244
  699. package/dist/cjs/labs/next/presets/preset.js +0 -106
  700. package/dist/cjs/plugins/analytics/analytics-queue.js +0 -79
  701. package/dist/cjs/plugins/analytics/fire-analytics-event.js +0 -35
  702. package/dist/cjs/plugins/collab-edit/provider/channel.js +0 -313
  703. package/dist/cjs/plugins/collab-edit/provider/logger.js +0 -17
  704. package/dist/cjs/plugins/collab-edit/provider/mock-users.js +0 -19
  705. package/dist/cjs/plugins/data-consumer/plugin-key.js +0 -9
  706. package/dist/cjs/plugins/media/toolbar/toolbar-messages.js +0 -15
  707. package/dist/cjs/profiler/render-count.js +0 -60
  708. package/dist/cjs/ui/ColorPalette/Color/index.js +0 -9
  709. package/dist/cjs/ui/ConfigPanel/FieldDescription.js +0 -19
  710. package/dist/cjs/ui/WithPluginState/types.js +0 -5
  711. package/dist/es2019/labs/next/presets/preset.js +0 -71
  712. package/dist/es2019/plugins/analytics/analytics-queue.js +0 -53
  713. package/dist/es2019/plugins/analytics/fire-analytics-event.js +0 -26
  714. package/dist/es2019/plugins/collab-edit/provider/channel.js +0 -179
  715. package/dist/es2019/plugins/collab-edit/provider/logger.js +0 -8
  716. package/dist/es2019/plugins/collab-edit/provider/mock-users.js +0 -12
  717. package/dist/es2019/plugins/data-consumer/plugin-key.js +0 -2
  718. package/dist/es2019/plugins/media/toolbar/toolbar-messages.js +0 -8
  719. package/dist/es2019/profiler/render-count.js +0 -53
  720. package/dist/es2019/ui/ColorPalette/Color/index.js +0 -2
  721. package/dist/es2019/ui/ConfigPanel/FieldDescription.js +0 -12
  722. package/dist/esm/labs/next/presets/preset.js +0 -98
  723. package/dist/esm/plugins/analytics/analytics-queue.js +0 -71
  724. package/dist/esm/plugins/analytics/fire-analytics-event.js +0 -28
  725. package/dist/esm/plugins/analytics/types/type-ahead.js +0 -1
  726. package/dist/esm/plugins/collab-edit/provider/channel.js +0 -305
  727. package/dist/esm/plugins/collab-edit/provider/logger.js +0 -10
  728. package/dist/esm/plugins/collab-edit/provider/mock-users.js +0 -12
  729. package/dist/esm/plugins/data-consumer/plugin-key.js +0 -2
  730. package/dist/esm/plugins/media/toolbar/toolbar-messages.js +0 -8
  731. package/dist/esm/profiler/render-count.js +0 -49
  732. package/dist/esm/ui/ColorPalette/Color/index.js +0 -2
  733. package/dist/esm/ui/ConfigPanel/FieldDescription.js +0 -11
  734. package/dist/esm/ui/WithPluginState/types.js +0 -1
  735. package/dist/types/labs/next/presets/preset.d.ts +0 -46
  736. package/dist/types/plugins/analytics/analytics-queue.d.ts +0 -10
  737. package/dist/types/plugins/analytics/fire-analytics-event.d.ts +0 -9
  738. package/dist/types/plugins/analytics/types/type-ahead.d.ts +0 -1
  739. package/dist/types/plugins/collab-edit/provider/channel.d.ts +0 -48
  740. package/dist/types/plugins/collab-edit/provider/logger.d.ts +0 -1
  741. package/dist/types/plugins/collab-edit/provider/mock-users.d.ts +0 -6
  742. package/dist/types/plugins/data-consumer/plugin-key.d.ts +0 -2
  743. package/dist/types/plugins/media/toolbar/toolbar-messages.d.ts +0 -7
  744. package/dist/types/profiler/render-count.d.ts +0 -14
  745. package/dist/types/ui/ColorPalette/Color/index.d.ts +0 -2
  746. package/dist/types/ui/ConfigPanel/FieldDescription.d.ts +0 -6
  747. package/dist/types/ui/WithPluginState/types.d.ts +0 -10
  748. /package/dist/cjs/{plugins/analytics/types/type-ahead.js → types/get-editor-props.js} +0 -0
  749. /package/dist/es2019/{plugins/analytics/types/type-ahead.js → types/get-editor-props.js} +0 -0
  750. /package/dist/{es2019/ui/WithPluginState/types.js → esm/types/get-editor-props.js} +0 -0
@@ -1,63 +1,16 @@
1
1
  import { NodeSelection, Selection, TextSelection } from 'prosemirror-state';
2
- import { findDomRefAtPos, removeNodeBefore } from 'prosemirror-utils';
2
+ import { findDomRefAtPos, findPositionOfNodeBefore, removeNodeBefore } from 'prosemirror-utils';
3
3
  import { ZERO_WIDTH_SPACE } from '@atlaskit/editor-common/utils';
4
4
  import { Direction, isBackward, isForward } from './direction';
5
5
  import { GapCursorSelection, Side } from './selection';
6
- import { getMediaNearPos, isTextBlockNearPos } from './utils';
6
+ import { isTextBlockNearPos } from './utils';
7
7
  import { isValidTargetNode } from './utils/is-valid-target-node';
8
8
  import { atTheBeginningOfDoc, atTheEndOfDoc } from '../../../utils/prosemirror/position';
9
9
  import { gapCursorPluginKey } from '../pm-plugins/gap-cursor-plugin-key';
10
10
  import { isPositionNearTableRow } from '../../../utils/table';
11
- const mapDirection = {
12
- [Direction.LEFT]: -1,
13
- [Direction.RIGHT]: 1,
14
- [Direction.UP]: -1,
15
- [Direction.DOWN]: 1,
16
- [Direction.BACKWARD]: -1,
17
- [Direction.FORWARD]: 1
18
- };
19
- function shouldHandleMediaGapCursor(dir, state) {
20
- const {
21
- doc,
22
- schema,
23
- selection
24
- } = state;
25
- let $pos = isBackward(dir) ? selection.$from : selection.$to;
26
- if (selection instanceof TextSelection) {
27
- // Should not use gap cursor if I am moving from a text selection into a media node
28
- if (dir === Direction.UP && !atTheBeginningOfDoc(state) || dir === Direction.DOWN && !atTheEndOfDoc(state)) {
29
- const media = getMediaNearPos(doc, $pos, schema, mapDirection[dir]);
30
- if (media) {
31
- return false;
32
- }
33
- }
34
-
35
- // Should not use gap cursor if I am moving from a text selection into a media node with layout wrap-right or wrap-left
36
- if (dir === Direction.LEFT || dir === Direction.RIGHT) {
37
- const media = getMediaNearPos(doc, $pos, schema, mapDirection[dir]);
38
- const {
39
- mediaSingle
40
- } = schema.nodes;
41
- if (media && media.type === mediaSingle && (media.attrs.layout === 'wrap-right' || media.attrs.layout === 'wrap-left')) {
42
- return false;
43
- }
44
- }
45
- }
46
- if (selection instanceof NodeSelection) {
47
- // Should not use gap cursor if I am moving left/right from media node with layout wrap right or wrap-left
48
- if (dir === Direction.LEFT || dir === Direction.RIGHT) {
49
- const maybeMedia = doc.nodeAt(selection.$from.pos);
50
- const {
51
- mediaSingle
52
- } = schema.nodes;
53
- if (maybeMedia && maybeMedia.type === mediaSingle && (maybeMedia.attrs.layout === 'wrap-right' || maybeMedia.attrs.layout === 'wrap-left')) {
54
- return false;
55
- }
56
- }
57
- }
58
- return true;
59
- }
11
+ import { isMediaNode, isNodeBeforeMediaNode } from '@atlaskit/editor-common/utils';
60
12
  export const shouldSkipGapCursor = (direction, state, $pos) => {
13
+ var _$pos$nodeBefore;
61
14
  const {
62
15
  doc,
63
16
  schema
@@ -67,13 +20,52 @@ export const shouldSkipGapCursor = (direction, state, $pos) => {
67
20
  if (atTheBeginningOfDoc(state)) {
68
21
  return false;
69
22
  }
70
- return isPositionNearTableRow($pos, schema, 'before') || isTextBlockNearPos(doc, schema, $pos, -1);
23
+ return isPositionNearTableRow($pos, schema, 'before') || isTextBlockNearPos(doc, schema, $pos, -1) || isNodeBeforeMediaNode($pos, state);
71
24
  case Direction.DOWN:
72
- return atTheEndOfDoc(state) || isTextBlockNearPos(doc, schema, $pos, 1) || isPositionNearTableRow($pos, schema, 'after');
25
+ return atTheEndOfDoc(state) || isTextBlockNearPos(doc, schema, $pos, 1) || isPositionNearTableRow($pos, schema, 'after') || ((_$pos$nodeBefore = $pos.nodeBefore) === null || _$pos$nodeBefore === void 0 ? void 0 : _$pos$nodeBefore.type.name) === 'text' && !$pos.nodeAfter // end of a paragraph
26
+ ;
27
+
73
28
  default:
74
29
  return false;
75
30
  }
76
31
  };
32
+
33
+ // These cases should be handled using the handleMediaGapCursor function
34
+ function shouldHandleMediaGapCursor(dir, state) {
35
+ var _selection$$from$node;
36
+ const {
37
+ selection
38
+ } = state;
39
+ const upArrowFromGapCursorIntoMedia = selection instanceof GapCursorSelection && dir === Direction.UP && selection.$from.nodeBefore && isMediaNode(selection.$from.nodeBefore);
40
+ const downArrowFromGapCursorIntoMediaGroup = selection instanceof GapCursorSelection && dir === Direction.DOWN && ((_selection$$from$node = selection.$from.nodeAfter) === null || _selection$$from$node === void 0 ? void 0 : _selection$$from$node.type.name) === 'mediaGroup';
41
+ return upArrowFromGapCursorIntoMedia || downArrowFromGapCursorIntoMediaGroup;
42
+ }
43
+
44
+ // Handle media gap cursor for up/down arrow into media nodes
45
+ // Should check this case by using shouldHandleMediaGapCursor first
46
+ function handleMediaGapCursor(dir, state) {
47
+ const {
48
+ selection,
49
+ tr
50
+ } = state;
51
+ let $pos = isBackward(dir) ? selection.$from : selection.$to;
52
+ if (dir === Direction.UP && selection.$from.nodeBefore && isMediaNode(selection.$from.nodeBefore)) {
53
+ var _tr$doc$nodeAt;
54
+ const nodeBeforePos = findPositionOfNodeBefore(tr.selection);
55
+ if (nodeBeforePos && selection.side === 'right' && ((_tr$doc$nodeAt = tr.doc.nodeAt(nodeBeforePos)) === null || _tr$doc$nodeAt === void 0 ? void 0 : _tr$doc$nodeAt.type.name) === 'mediaSingle') {
56
+ tr.setSelection(new NodeSelection(tr.doc.resolve(nodeBeforePos))).scrollIntoView();
57
+ } else if (nodeBeforePos || nodeBeforePos === 0) {
58
+ tr.setSelection(new GapCursorSelection(tr.doc.resolve(nodeBeforePos), Side.LEFT)).scrollIntoView();
59
+ }
60
+ }
61
+ if (dir === Direction.DOWN && selection.$from.nodeAfter) {
62
+ const nodeAfterPos = selection.side === 'right' ? $pos.pos : $pos.pos + selection.$from.nodeAfter.nodeSize;
63
+ if (nodeAfterPos) {
64
+ tr.setSelection(new GapCursorSelection(tr.doc.resolve(nodeAfterPos), Side.LEFT)).scrollIntoView();
65
+ }
66
+ }
67
+ return tr;
68
+ }
77
69
  export const arrow = (dir, endOfTextblock) => (state, dispatch, view) => {
78
70
  const {
79
71
  doc,
@@ -103,13 +95,21 @@ export const arrow = (dir, endOfTextblock) => (state, dispatch, view) => {
103
95
  if (selection.node.isInline) {
104
96
  return false;
105
97
  }
106
- if (dir === Direction.UP || dir === Direction.DOWN) {
98
+ if (dir === Direction.UP && !atTheBeginningOfDoc(state) && !isNodeBeforeMediaNode($pos, state) || dir === Direction.DOWN) {
107
99
  // We dont add gap cursor on node selections going up and down
100
+ // Except we do if we're going up for a block node which is the
101
+ // first node in the document OR the node before is a media node
108
102
  return false;
109
103
  }
110
104
  }
111
- if (!shouldHandleMediaGapCursor(dir, state)) {
112
- return false;
105
+
106
+ // Handle media gap cursor for up/down arrow into media nodes
107
+ if (shouldHandleMediaGapCursor(dir, state)) {
108
+ const updatedTr = handleMediaGapCursor(dir, state);
109
+ if (dispatch) {
110
+ dispatch(updatedTr);
111
+ }
112
+ return true;
113
113
  }
114
114
 
115
115
  // when jumping between block nodes at the same depth, we need to reverse cursor without changing ProseMirror position
@@ -28,7 +28,10 @@ const baseStatusPlugin = options => ({
28
28
  }];
29
29
  },
30
30
  contentComponent({
31
- editorView
31
+ editorView,
32
+ popupsMountPoint,
33
+ popupsBoundariesElement,
34
+ popupsScrollableElement
32
35
  }) {
33
36
  const domAtPos = editorView.domAtPos.bind(editorView);
34
37
  return /*#__PURE__*/React.createElement(WithPluginState, {
@@ -60,6 +63,9 @@ const baseStatusPlugin = options => ({
60
63
  defaultText: text,
61
64
  defaultColor: color,
62
65
  defaultLocalId: localId,
66
+ mountTo: popupsMountPoint,
67
+ boundariesElement: popupsBoundariesElement,
68
+ scrollableElement: popupsScrollableElement,
63
69
  onSelect: status => {
64
70
  updateStatus(status)(editorView.state, editorView.dispatch);
65
71
  },
@@ -106,5 +112,5 @@ const decorateWithPluginOptions = (plugin, options) => {
106
112
  };
107
113
  return plugin;
108
114
  };
109
- const statusPlugin = options => decorateWithPluginOptions(baseStatusPlugin(options), options);
115
+ const statusPlugin = (options, api) => decorateWithPluginOptions(baseStatusPlugin(options, api), options);
110
116
  export default statusPlugin;
@@ -182,7 +182,10 @@ export class StatusPickerWithoutAnalytcs extends React.Component {
182
182
  render() {
183
183
  const {
184
184
  isNew,
185
- target
185
+ target,
186
+ mountTo,
187
+ boundariesElement,
188
+ scrollableElement
186
189
  } = this.props;
187
190
  const {
188
191
  color,
@@ -194,7 +197,10 @@ export class StatusPickerWithoutAnalytcs extends React.Component {
194
197
  handleClickOutside: this.handleClickOutside,
195
198
  handleEscapeKeydown: this.handleEscapeKeydown,
196
199
  zIndex: akEditorFloatingDialogZIndex,
197
- fitHeight: 40
200
+ fitHeight: 40,
201
+ mountTo: mountTo,
202
+ boundariesElement: boundariesElement,
203
+ scrollableElement: scrollableElement
198
204
  }, jsx("div", {
199
205
  css: pickerContainer,
200
206
  onClick: this.handlePopupClick
@@ -1,4 +1,4 @@
1
- import { NodeSelection, Selection } from 'prosemirror-state';
1
+ import { NodeSelection } from 'prosemirror-state';
2
2
  export const mayGetStatusAtSelection = selection => {
3
3
  if (selection && selection instanceof NodeSelection) {
4
4
  const nodeSelection = selection;
@@ -8,15 +8,5 @@ export const mayGetStatusAtSelection = selection => {
8
8
  }
9
9
  return null;
10
10
  };
11
- export const mayGetStatusAtPos = (pos, doc) => {
12
- if (pos) {
13
- const node = doc.nodeAt(pos);
14
- if (node && node.type.name === 'status') {
15
- return node.attrs;
16
- }
17
- }
18
- return null;
19
- };
20
11
  export const isEmptyStatus = node => node && (node.text && node.text.trim().length === 0 || node.text === '');
21
- export const setSelectionNearPos = (tr, pos) => tr.setSelection(Selection.near(tr.doc.resolve(tr.mapping.map(pos))));
22
12
  export const setNodeSelectionNearPos = (tr, pos) => tr.setSelection(NodeSelection.create(tr.doc, tr.mapping.map(pos)));
@@ -5,7 +5,7 @@ import { DEFAULT_BORDER_COLOR } from '../../../ui/ColorPalette/Palettes/common';
5
5
  import { DEFAULT_COLOR, getActiveColor } from '../utils/color';
6
6
  import { getDisabledState } from '../utils/disabled';
7
7
  export { DEFAULT_COLOR } from '../utils/color';
8
- export function createInitialPluginState(editorState, pluginConfig) {
8
+ function createInitialPluginState(editorState, pluginConfig) {
9
9
  const defaultColor = (pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.defaultColor) || DEFAULT_COLOR;
10
10
  const palette = [{
11
11
  value: defaultColor.color,
@@ -3,9 +3,12 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import React from 'react';
4
4
  import { jsx } from '@emotion/react';
5
5
  import { defineMessages, injectIntl } from 'react-intl-next';
6
+ import { getSelectedRowAndColumnFromPalette } from '@atlaskit/editor-common/ui-color';
7
+ import { ArrowKeyNavigationType } from '@atlaskit/editor-common/ui-menu';
8
+ import { hexToEditorTextPaletteColor } from '@atlaskit/editor-palette';
6
9
  import { akEditorMenuZIndex } from '@atlaskit/editor-shared-styles';
7
10
  import ExpandIcon from '@atlaskit/icon/glyph/chevron-down';
8
- import ColorPalette from '../../../../ui/ColorPalette';
11
+ import ColorPalette, { textPaletteTooltipMessages } from '../../../../ui/ColorPalette';
9
12
  import Dropdown from '../../../../ui/Dropdown';
10
13
  import { expandIconWrapperStyle, wrapperStyle, separatorStyles, triggerWrapperStyles } from '../../../../ui/styles';
11
14
  import ToolbarButton, { TOOLBAR_BUTTON } from '../../../../ui/ToolbarButton';
@@ -27,7 +30,8 @@ export class ToolbarTextColor extends React.Component {
27
30
  constructor(...args) {
28
31
  super(...args);
29
32
  _defineProperty(this, "state", {
30
- isOpen: false
33
+ isOpen: false,
34
+ isOpenedByKeyboard: false
31
35
  });
32
36
  _defineProperty(this, "toolbarItemRef", /*#__PURE__*/React.createRef());
33
37
  _defineProperty(this, "changeColor", color => commands.changeColor(color)(this.props.editorView.state, this.props.editorView.dispatch));
@@ -39,6 +43,7 @@ export class ToolbarTextColor extends React.Component {
39
43
  });
40
44
  });
41
45
  _defineProperty(this, "changeTextColor", (color, disabled) => {
46
+ var _this$toolbarItemRef, _this$toolbarItemRef$;
42
47
  if (!disabled) {
43
48
  var _this$props$editorVie;
44
49
  const {
@@ -60,6 +65,7 @@ export class ToolbarTextColor extends React.Component {
60
65
  //To set the focus on the textcolor button when the menu is closed by 'Esc' only to meet aria guidelines
61
66
  (_this$props$editorVie = this.props.editorView) === null || _this$props$editorVie === void 0 ? void 0 : _this$props$editorVie.focus();
62
67
  }
68
+ (_this$toolbarItemRef = this.toolbarItemRef) === null || _this$toolbarItemRef === void 0 ? void 0 : (_this$toolbarItemRef$ = _this$toolbarItemRef.current) === null || _this$toolbarItemRef$ === void 0 ? void 0 : _this$toolbarItemRef$.focus();
63
69
  return false;
64
70
  });
65
71
  _defineProperty(this, "toggleOpen", () => {
@@ -68,6 +74,15 @@ export class ToolbarTextColor extends React.Component {
68
74
  logCloseEvent: true
69
75
  });
70
76
  });
77
+ _defineProperty(this, "onKeyDown", event => {
78
+ if (event.key === 'Enter' || event.key === ' ') {
79
+ event.preventDefault();
80
+ this.setState({
81
+ isOpenedByKeyboard: true
82
+ });
83
+ this.toggleOpen();
84
+ }
85
+ });
71
86
  _defineProperty(this, "handleOpenChange", ({
72
87
  isOpen,
73
88
  logCloseEvent,
@@ -76,14 +91,19 @@ export class ToolbarTextColor extends React.Component {
76
91
  this.setState({
77
92
  isOpen
78
93
  });
94
+ if (!isOpen) {
95
+ this.setState({
96
+ isOpenedByKeyboard: false
97
+ });
98
+ }
79
99
  if (logCloseEvent) {
80
100
  this.dispatchAnalyticsEvent(this.buildAnalyticsPalette(isOpen ? ACTION.OPENED : ACTION.CLOSED, {
81
101
  noSelect: isOpen === false
82
102
  }));
83
103
  }
84
104
  if (!isOpen && event instanceof KeyboardEvent && (event === null || event === void 0 ? void 0 : event.key) === 'Escape') {
85
- var _this$toolbarItemRef, _this$toolbarItemRef$;
86
- (_this$toolbarItemRef = this.toolbarItemRef) === null || _this$toolbarItemRef === void 0 ? void 0 : (_this$toolbarItemRef$ = _this$toolbarItemRef.current) === null || _this$toolbarItemRef$ === void 0 ? void 0 : _this$toolbarItemRef$.focus();
105
+ var _this$toolbarItemRef2, _this$toolbarItemRef3;
106
+ (_this$toolbarItemRef2 = this.toolbarItemRef) === null || _this$toolbarItemRef2 === void 0 ? void 0 : (_this$toolbarItemRef3 = _this$toolbarItemRef2.current) === null || _this$toolbarItemRef3 === void 0 ? void 0 : _this$toolbarItemRef3.focus();
87
107
  }
88
108
  });
89
109
  _defineProperty(this, "hide", e => {
@@ -98,20 +118,21 @@ export class ToolbarTextColor extends React.Component {
98
118
  isOpen: false
99
119
  });
100
120
  if (e instanceof KeyboardEvent && e.key === 'Escape') {
101
- var _this$toolbarItemRef2, _this$toolbarItemRef3;
102
- (_this$toolbarItemRef2 = this.toolbarItemRef) === null || _this$toolbarItemRef2 === void 0 ? void 0 : (_this$toolbarItemRef3 = _this$toolbarItemRef2.current) === null || _this$toolbarItemRef3 === void 0 ? void 0 : _this$toolbarItemRef3.focus();
121
+ var _this$toolbarItemRef4, _this$toolbarItemRef5;
122
+ (_this$toolbarItemRef4 = this.toolbarItemRef) === null || _this$toolbarItemRef4 === void 0 ? void 0 : (_this$toolbarItemRef5 = _this$toolbarItemRef4.current) === null || _this$toolbarItemRef5 === void 0 ? void 0 : _this$toolbarItemRef5.focus();
103
123
  }
104
124
  }
105
125
  });
106
126
  _defineProperty(this, "hideonEsc", e => {
107
- var _this$toolbarItemRef4, _this$toolbarItemRef5;
127
+ var _this$toolbarItemRef6, _this$toolbarItemRef7;
108
128
  this.hide(e);
109
- (_this$toolbarItemRef4 = this.toolbarItemRef) === null || _this$toolbarItemRef4 === void 0 ? void 0 : (_this$toolbarItemRef5 = _this$toolbarItemRef4.current) === null || _this$toolbarItemRef5 === void 0 ? void 0 : _this$toolbarItemRef5.focus();
129
+ (_this$toolbarItemRef6 = this.toolbarItemRef) === null || _this$toolbarItemRef6 === void 0 ? void 0 : (_this$toolbarItemRef7 = _this$toolbarItemRef6.current) === null || _this$toolbarItemRef7 === void 0 ? void 0 : _this$toolbarItemRef7.focus();
110
130
  });
111
131
  }
112
132
  render() {
113
133
  const {
114
- isOpen
134
+ isOpen,
135
+ isOpenedByKeyboard
115
136
  } = this.state;
116
137
  const {
117
138
  popupsMountPoint,
@@ -138,6 +159,10 @@ export class ToolbarTextColor extends React.Component {
138
159
  fitWidth = 242;
139
160
  }
140
161
  const selectedColor = pluginState.color !== pluginState.defaultColor && pluginState.color;
162
+ const {
163
+ selectedRowIndex,
164
+ selectedColumnIndex
165
+ } = getSelectedRowAndColumnFromPalette(palette, pluginState.color);
141
166
  return jsx("span", {
142
167
  css: wrapperStyle
143
168
  }, jsx(Dropdown, {
@@ -151,6 +176,13 @@ export class ToolbarTextColor extends React.Component {
151
176
  fitWidth: fitWidth,
152
177
  onOpenChange: this.onOpenChange,
153
178
  closeOnTab: true,
179
+ arrowKeyNavigationProviderOptions: {
180
+ type: ArrowKeyNavigationType.COLOR,
181
+ selectedRowIndex,
182
+ selectedColumnIndex,
183
+ isOpenedByKeyboard,
184
+ isPopupPositioned: true
185
+ },
154
186
  trigger: jsx(ToolbarButton, {
155
187
  buttonId: TOOLBAR_BUTTON.TEXT_COLOR,
156
188
  spacing: isReducedSpacing ? 'none' : 'default',
@@ -161,6 +193,7 @@ export class ToolbarTextColor extends React.Component {
161
193
  "aria-haspopup": true,
162
194
  title: labelTextColor,
163
195
  onClick: this.toggleOpen,
196
+ onKeyDown: this.onKeyDown,
164
197
  ref: this.toolbarItemRef,
165
198
  iconBefore: jsx("div", {
166
199
  css: triggerWrapperStyles
@@ -177,11 +210,14 @@ export class ToolbarTextColor extends React.Component {
177
210
  }, jsx("div", {
178
211
  "data-testid": "text-color-palette"
179
212
  }, jsx(ColorPalette, {
180
- palette: palette,
181
213
  onClick: color => this.changeTextColor(color, pluginState.disabled),
182
214
  selectedColor: pluginState.color,
183
- textPalette: true,
184
- useSomewhatSemanticTextColorNames: useSomewhatSemanticTextColorNames
215
+ paletteOptions: {
216
+ palette,
217
+ hexToPaletteColor: hexToEditorTextPaletteColor,
218
+ paletteColorTooltipMessages: textPaletteTooltipMessages,
219
+ showSomewhatSemanticTooltips: useSomewhatSemanticTextColorNames
220
+ }
185
221
  }))), jsx("span", {
186
222
  css: separatorStyles
187
223
  }));
@@ -12,14 +12,19 @@ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, PUNC, SYMBOL } f
12
12
  function replaceTextUsingCaptureGroup(text) {
13
13
  return (state, match, start, end) => {
14
14
  const [, prefix,, suffix] = match;
15
- const replacement = (prefix || '') + text + (suffix || '');
15
+ const replacement = text + (suffix || '');
16
16
  let {
17
17
  tr,
18
18
  selection: {
19
19
  $to
20
20
  }
21
21
  } = state;
22
- tr.replaceWith(start, end, state.schema.text(replacement, $to.marks()));
22
+ const startPos = start + (prefix || '').length;
23
+ const safePos = Math.min(
24
+ // I know it is almost impossible to have a negative value at this point.
25
+ // But, this is JS #trustnoone
26
+ Math.max(startPos, 0), end);
27
+ tr.replaceWith(safePos, end, state.schema.text(replacement, $to.marks()));
23
28
  tr.setSelection(Selection.near(tr.doc.resolve(tr.selection.to)));
24
29
  return tr;
25
30
  };
@@ -67,6 +72,7 @@ function createSingleQuotesRules() {
67
72
  // apostrophe
68
73
  createReplacementRule('’', /(\w+)(')(\w+)$/)];
69
74
  }
75
+
70
76
  /**
71
77
  * Get replacement rules related to product
72
78
  */
@@ -1,4 +1,4 @@
1
- import React, { useCallback, useMemo } from 'react';
1
+ import React, { useCallback, useMemo, useState } from 'react';
2
2
  import { akEditorMenuZIndex } from '@atlaskit/editor-shared-styles';
3
3
  import DropdownMenu from '../../../../ui/DropdownMenu';
4
4
  import { useMenuState } from './hooks/menu-state';
@@ -14,6 +14,7 @@ export const FormattingTextDropdownMenu = /*#__PURE__*/React.memo(({
14
14
  popupsScrollableElement
15
15
  }) => {
16
16
  const [isMenuOpen, toggleMenu, closeMenu] = useMenuState();
17
+ const [isOpenedByKeyboard, setIsOpenedByKeyboard] = useState(false);
17
18
  const group = useMemo(() => [{
18
19
  items
19
20
  }], [items]);
@@ -37,13 +38,29 @@ export const FormattingTextDropdownMenu = /*#__PURE__*/React.memo(({
37
38
  zIndex: akEditorMenuZIndex,
38
39
  fitHeight: 188,
39
40
  fitWidth: 136,
40
- shouldUseDefaultRole: true
41
+ shouldUseDefaultRole: true,
42
+ shouldFocusFirstItem: () => {
43
+ if (isOpenedByKeyboard) {
44
+ setIsOpenedByKeyboard(false);
45
+ }
46
+ return isOpenedByKeyboard;
47
+ }
41
48
  }, /*#__PURE__*/React.createElement(MoreButton, {
42
49
  isSelected: isMenuOpen || hasFormattingActive,
43
50
  label: moreButtonLabel,
44
51
  isReducedSpacing: isReducedSpacing,
45
52
  isDisabled: false,
46
- onClick: toggleMenu,
53
+ onClick: () => {
54
+ toggleMenu();
55
+ setIsOpenedByKeyboard(false);
56
+ },
57
+ onKeyDown: event => {
58
+ if (event.key === 'Enter' || event.key === ' ') {
59
+ event.preventDefault();
60
+ toggleMenu();
61
+ setIsOpenedByKeyboard(true);
62
+ }
63
+ },
47
64
  "aria-expanded": isMenuOpen
48
65
  }));
49
66
  });
@@ -10,8 +10,9 @@ import { SingleToolbarButtons } from './single-toolbar-buttons';
10
10
  import { MoreButton } from './more-button';
11
11
  import { FormattingTextDropdownMenu } from './dropdown-menu';
12
12
  import { toolbarMessages } from './toolbar-messages';
13
- import { usePreviousObjectState, compareItemsArrays, isArrayContainsContent } from '../../utils';
13
+ import { compareItemsArrays, isArrayContainsContent } from '../../utils';
14
14
  import Announcer from '../../../../utils/announcer/announcer';
15
+ import { usePreviousState } from '@atlaskit/editor-common/hooks';
15
16
  const ToolbarFormatting = ({
16
17
  shouldUseResponsiveToolbar,
17
18
  popupsMountPoint,
@@ -23,6 +24,7 @@ const ToolbarFormatting = ({
23
24
  isToolbarDisabled,
24
25
  intl
25
26
  }) => {
27
+ var _usePreviousState;
26
28
  const editorState = useMemo(() => editorView.state, [editorView.state]);
27
29
  const [message, setMessage] = useState('');
28
30
  const defaultIcons = useFormattingIcons({
@@ -54,7 +56,7 @@ const ToolbarFormatting = ({
54
56
  const superscriptOffSubscriptOnStatus = intl.formatMessage(toolbarMessages.superscriptOffSubscriptOn);
55
57
  const subscriptOffSuperscriptOnStatus = intl.formatMessage(toolbarMessages.subscriptOffSuperscriptOn);
56
58
  const activeItems = [...dropdownItems, ...singleItems].filter(item => item.isActive);
57
- const prevActiveItems = usePreviousObjectState(activeItems);
59
+ const prevActiveItems = (_usePreviousState = usePreviousState(activeItems)) !== null && _usePreviousState !== void 0 ? _usePreviousState : [];
58
60
  const fromSuperscriptToSubscript = isArrayContainsContent(activeItems, 'Subscript') && isArrayContainsContent(prevActiveItems, 'Superscript');
59
61
  const fromSubscriptToSuperscript = isArrayContainsContent(activeItems, 'Superscript') && isArrayContainsContent(prevActiveItems, 'Subscript');
60
62
  let comparedItems;
@@ -10,12 +10,14 @@ export const MoreButton = /*#__PURE__*/React.memo(({
10
10
  isReducedSpacing,
11
11
  isSelected,
12
12
  isDisabled,
13
- onClick
13
+ onClick,
14
+ onKeyDown
14
15
  }) => {
15
16
  return jsx(ToolbarButton, {
16
17
  disabled: isDisabled,
17
18
  selected: isSelected,
18
19
  onClick: onClick,
20
+ onKeyDown: onKeyDown,
19
21
  spacing: isReducedSpacing ? 'none' : 'default',
20
22
  title: label,
21
23
  iconBefore: jsx("div", {
@@ -1,25 +1,5 @@
1
- import { useRef, useEffect } from 'react';
2
1
  import { CellSelection } from '@atlaskit/editor-tables/cell-selection';
3
2
  import { FORMATTING_MARK_TYPES, FORMATTING_NODE_TYPES } from './commands/clear-formatting';
4
- export const nodeLen = node => {
5
- return node.nodeType === 3 && node.nodeValue ? node.nodeValue.length : node.childNodes.length;
6
- };
7
- export const isIgnorable = dom => dom.pmViewDesc && dom.pmViewDesc.size === 0;
8
- export const isBlockNode = dom => {
9
- const desc = dom.pmViewDesc;
10
- return desc && desc.node && desc.node.isBlock;
11
- };
12
- export const domIndex = function (node) {
13
- if (node) {
14
- for (let index = 0;; index++) {
15
- node = node.previousSibling;
16
- if (!node) {
17
- return index;
18
- }
19
- }
20
- }
21
- return;
22
- };
23
3
  export const hasCode = (state, pos) => {
24
4
  const {
25
5
  code
@@ -116,13 +96,6 @@ const marksArePresent = state => {
116
96
  export const checkFormattingIsPresent = state => {
117
97
  return marksArePresent(state) || blockStylingIsPresent(state);
118
98
  };
119
- export const usePreviousObjectState = value => {
120
- const ref = useRef([]);
121
- useEffect(() => {
122
- ref.current = value;
123
- });
124
- return ref.current;
125
- };
126
99
  export const compareItemsArrays = (items, prevItems) => {
127
100
  return items && items.filter(item => !prevItems.includes(item));
128
101
  };
@@ -25,6 +25,7 @@ export function ToolbarDropdown(props) {
25
25
  onItemActivated
26
26
  } = props;
27
27
  const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);
28
+ const [isOpenedByKeyboard, setOpenedByKeyboard] = React.useState(false);
28
29
  const labelLists = formatMessage(listMessages.lists);
29
30
  const onOpenChange = attrs => {
30
31
  setIsDropdownOpen(attrs.isDropdownOpen);
@@ -34,6 +35,13 @@ export function ToolbarDropdown(props) {
34
35
  isDropdownOpen: !isDropdownOpen
35
36
  });
36
37
  };
38
+ const handleOnKeyDown = event => {
39
+ if (event.key === 'Enter' || event.key === ' ') {
40
+ event.preventDefault();
41
+ setIsDropdownOpen(!isDropdownOpen);
42
+ setOpenedByKeyboard(true);
43
+ }
44
+ };
37
45
  const items = useItems(props);
38
46
  const handleOnItemActivated = ({
39
47
  item,
@@ -57,7 +65,13 @@ export function ToolbarDropdown(props) {
57
65
  onOpenChange: onOpenChange,
58
66
  fitHeight: 188,
59
67
  fitWidth: 175,
60
- shouldUseDefaultRole: true
68
+ shouldUseDefaultRole: true,
69
+ shouldFocusFirstItem: () => {
70
+ if (isOpenedByKeyboard) {
71
+ setOpenedByKeyboard(false);
72
+ }
73
+ return isOpenedByKeyboard;
74
+ }
61
75
  }, jsx(ToolbarButton, {
62
76
  spacing: isReducedSpacing ? 'none' : 'default',
63
77
  selected: bulletListActive || orderedListActive,
@@ -66,6 +80,7 @@ export function ToolbarDropdown(props) {
66
80
  "aria-label": labelLists,
67
81
  disabled: disabled,
68
82
  onClick: handleTriggerClick,
83
+ onKeyDown: handleOnKeyDown,
69
84
  title: labelLists,
70
85
  iconBefore: jsx("span", {
71
86
  css: wrapperStyle
@@ -2,11 +2,6 @@ export const TYPE_AHEAD_DECORATION_KEY = 'typeahead_decoration_key';
2
2
  export const TYPE_AHEAD_DECORATION_DATA_ATTRIBUTE = 'typeaheadDecoration';
3
3
  export const TYPE_AHEAD_POPUP_CONTENT_CLASS = 'fabric-editor-typeahead';
4
4
  export const TYPE_AHEAD_DECORATION_ELEMENT_ID = 'typeahaed_decoration_element_id';
5
- export let NavigationDirection;
6
- (function (NavigationDirection) {
7
- NavigationDirection[NavigationDirection["LEFT"] = -1] = "LEFT";
8
- NavigationDirection[NavigationDirection["RIGHT"] = 1] = "RIGHT";
9
- })(NavigationDirection || (NavigationDirection = {}));
10
5
  export let CloseSelectionOptions;
11
6
  (function (CloseSelectionOptions) {
12
7
  CloseSelectionOptions["BEFORE_TEXT_INSERTED"] = "BEFORE_TEXT_INSERTED";
@@ -19,7 +19,7 @@ import { getPluginState } from './utils';
19
19
  import { useItemInsert } from './ui/hooks/use-item-insert';
20
20
  import { updateSelectedIndex } from './commands/update-selected-index';
21
21
  import { StatsModifier } from './stats-modifier';
22
- import { ACTION, ACTION_SUBJECT, INPUT_METHOD, EVENT_TYPE, fireAnalyticsEvent } from '../analytics';
22
+ import { ACTION, ACTION_SUBJECT, INPUT_METHOD, EVENT_TYPE, fireAnalyticsEvent } from '@atlaskit/editor-common/analytics';
23
23
  const TypeAheadMenu = /*#__PURE__*/React.memo(({
24
24
  editorView,
25
25
  popupMountRef,
@@ -145,39 +145,4 @@ export const factoryDecorations = ({
145
145
  createDecorations,
146
146
  removeDecorations
147
147
  };
148
- };
149
- export const isSelectionInsideTypeAhead = ({
150
- decorationSet,
151
- selection
152
- }) => {
153
- if (!decorationSet || decorationSet === DecorationSet.empty) {
154
- return false;
155
- }
156
- const typeAheadDecorations = decorationSet.find(undefined, undefined, spec => {
157
- return spec.isTypeAheadDecoration;
158
- });
159
- if (!typeAheadDecorations || typeAheadDecorations.length === 0) {
160
- return false;
161
- }
162
- return typeAheadDecorations.some(dec => {
163
- return dec.from === selection.from && dec.to === selection.to;
164
- });
165
- };
166
- export const findDecorationElement = ({
167
- selection,
168
- decorationSet
169
- }) => {
170
- if (!decorationSet || decorationSet === DecorationSet.empty || !(selection instanceof TextSelection) || !selection.$cursor) {
171
- return null;
172
- }
173
- const {
174
- $cursor: {
175
- pos
176
- }
177
- } = selection;
178
- const decoration = decorationSet.find(pos, pos, spec => spec === null || spec === void 0 ? void 0 : spec.isTypeAheadDecoration);
179
- if (!decoration || decoration.length !== 1) {
180
- return null;
181
- }
182
- return document.querySelector(`#${decoration[0].spec.key}`);
183
148
  };