@atlaskit/editor-core 176.0.2 → 177.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 (450) hide show
  1. package/.eslintrc.js +2 -2
  2. package/CHANGELOG.md +114 -0
  3. package/codemods/{173.0.0-rename-unsafe-allowUndoRedoButton-prop.ts → 175.0.0-rename-unsafe-allowUndoRedoButton-prop.ts} +0 -0
  4. package/dist/cjs/create-editor/ReactEditorView.js +3 -1
  5. package/dist/cjs/create-editor/create-plugins-list.js +9 -6
  6. package/dist/cjs/create-editor/messages.js +17 -0
  7. package/dist/cjs/i18n/en.js +2 -2
  8. package/dist/cjs/i18n/en_GB.js +2 -2
  9. package/dist/cjs/i18n/en_ZZ.js +2 -2
  10. package/dist/cjs/i18n/index.js +4 -4
  11. package/dist/cjs/i18n/languages.js +9 -4
  12. package/dist/cjs/labs/next/presets/mobile.js +2 -2
  13. package/dist/cjs/labs/next/presets/preset.js +38 -6
  14. package/dist/cjs/plugins/annotation/nodeviews/index.js +1 -0
  15. package/dist/cjs/plugins/block-type/ui/ToolbarBlockType/index.js +6 -1
  16. package/dist/cjs/plugins/breakout/ui/LayoutButton.js +5 -1
  17. package/dist/cjs/plugins/card/pm-plugins/doc.js +18 -29
  18. package/dist/cjs/plugins/card/pm-plugins/main.js +7 -21
  19. package/dist/cjs/plugins/card/toolbar.js +24 -8
  20. package/dist/cjs/plugins/card/ui/EditLinkToolbar.js +9 -5
  21. package/dist/cjs/plugins/card/ui/LinkToolbarAppearance.js +19 -53
  22. package/dist/cjs/plugins/card/utils.js +17 -3
  23. package/dist/cjs/plugins/collab-edit/actions.js +3 -3
  24. package/dist/cjs/plugins/copy-button/toolbar.js +5 -3
  25. package/dist/cjs/plugins/date/index.js +1 -7
  26. package/dist/cjs/plugins/date/ui/DatePicker/index.js +1 -2
  27. package/dist/cjs/plugins/emoji/index.js +7 -14
  28. package/dist/cjs/plugins/expand/pm-plugins/main.js +4 -1
  29. package/dist/cjs/plugins/expand/toolbar.js +1 -0
  30. package/dist/cjs/plugins/extension/commands.js +17 -2
  31. package/dist/cjs/plugins/extension/pm-plugins/main.js +10 -0
  32. package/dist/cjs/plugins/extension/toolbar.js +49 -7
  33. package/dist/cjs/plugins/feature-flags-context/feature-flags-from-props.js +11 -11
  34. package/dist/cjs/plugins/find-replace/ui/FindReplaceToolbarButton.js +7 -2
  35. package/dist/cjs/plugins/floating-toolbar/index.js +16 -4
  36. package/dist/cjs/plugins/floating-toolbar/ui/CheckboxModal.js +99 -0
  37. package/dist/cjs/plugins/floating-toolbar/ui/ConfirmationModal.js +10 -30
  38. package/dist/cjs/plugins/floating-toolbar/ui/Dropdown.js +16 -4
  39. package/dist/cjs/plugins/floating-toolbar/ui/DropdownMenu.js +108 -55
  40. package/dist/cjs/plugins/floating-toolbar/ui/EmojiPickerButton.js +1 -2
  41. package/dist/cjs/plugins/floating-toolbar/ui/ScrollButtons.js +29 -108
  42. package/dist/cjs/plugins/floating-toolbar/ui/SimpleModal.js +51 -0
  43. package/dist/cjs/plugins/floating-toolbar/ui/Toolbar.js +27 -47
  44. package/dist/cjs/plugins/floating-toolbar/ui/messages.js +13 -3
  45. package/dist/cjs/plugins/floating-toolbar/utils.js +4 -19
  46. package/dist/cjs/plugins/help-dialog/index.js +3 -2
  47. package/dist/cjs/plugins/hyperlink/Toolbar.js +20 -1
  48. package/dist/cjs/plugins/hyperlink/ui/EditorLinkPicker/index.js +6 -3
  49. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +5 -10
  50. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-element-browser.js +2 -1
  51. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu-legacy.js +2 -1
  52. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu.js +2 -1
  53. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/dropdown-button.js +2 -1
  54. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/index.js +2 -0
  55. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/item.js +26 -12
  56. package/dist/cjs/plugins/layout/toolbar.js +1 -0
  57. package/dist/cjs/plugins/list/actions/outdent-list-items-selected.js +34 -4
  58. package/dist/cjs/plugins/list/commands/outdent-list.js +1 -1
  59. package/dist/cjs/plugins/list/index.js +6 -2
  60. package/dist/cjs/plugins/list/pm-plugins/input-rules/create-list-input-rule.js +13 -2
  61. package/dist/cjs/plugins/list/pm-plugins/input-rules/index.js +5 -2
  62. package/dist/cjs/plugins/list/pm-plugins/main.js +32 -10
  63. package/dist/cjs/plugins/media/index.js +35 -0
  64. package/dist/cjs/plugins/media/nodeviews/mediaGroup.js +7 -6
  65. package/dist/cjs/plugins/media/nodeviews/mediaInline.js +3 -1
  66. package/dist/cjs/plugins/media/nodeviews/mediaNodeUpdater.js +70 -64
  67. package/dist/cjs/plugins/media/nodeviews/mediaSingle.js +3 -1
  68. package/dist/cjs/plugins/media/pm-plugins/main.js +6 -0
  69. package/dist/cjs/plugins/media/toolbar/index.js +3 -0
  70. package/dist/cjs/plugins/media/utils/media-single.js +19 -3
  71. package/dist/cjs/plugins/panel/toolbar.js +1 -0
  72. package/dist/cjs/plugins/panel/utils.js +1 -1
  73. package/dist/cjs/plugins/paste/index.js +2 -1
  74. package/dist/cjs/plugins/paste/pm-plugins/analytics.js +19 -3
  75. package/dist/cjs/plugins/paste/pm-plugins/main.js +1 -1
  76. package/dist/cjs/plugins/paste/util/index.js +2 -2
  77. package/dist/cjs/plugins/placeholder/index.js +24 -47
  78. package/dist/cjs/plugins/placeholder/styles.js +2 -4
  79. package/dist/cjs/plugins/tasks-and-decisions/nodeviews/taskItem.js +7 -3
  80. package/dist/cjs/plugins/tasks-and-decisions/ui/ToolbarDecision/index.js +1 -0
  81. package/dist/cjs/plugins/text-color/ui/ToolbarTextColor/index.js +10 -5
  82. package/dist/cjs/plugins/text-formatting/ui/Toolbar/hooks/formatting-icons.js +5 -1
  83. package/dist/cjs/plugins/text-formatting/ui/Toolbar/single-toolbar-buttons.js +5 -1
  84. package/dist/cjs/plugins/toolbar-lists-indentation/ui/Toolbar.js +16 -6
  85. package/dist/cjs/plugins/type-ahead/index.js +2 -8
  86. package/dist/cjs/plugins/type-ahead/messages.js +44 -4
  87. package/dist/cjs/plugins/type-ahead/pm-plugins/decorations.js +0 -1
  88. package/dist/cjs/plugins/type-ahead/ui/InputQuery.js +17 -1
  89. package/dist/cjs/plugins/type-ahead/ui/TypeAheadList.js +9 -4
  90. package/dist/cjs/plugins/type-ahead/ui/TypeAheadListItem.js +8 -5
  91. package/dist/cjs/plugins/type-ahead/ui/TypeAheadPopup.js +2 -1
  92. package/dist/cjs/plugins/type-ahead/utils.js +44 -2
  93. package/dist/cjs/plugins/undo-redo/ui/ToolbarUndoRedo/index.js +6 -2
  94. package/dist/cjs/ui/Alignment/AlignmentButton/index.js +4 -1
  95. package/dist/cjs/ui/Appearance/Comment/Toolbar.js +1 -1
  96. package/dist/cjs/ui/Appearance/FullPage/FullPageToolbar.js +2 -1
  97. package/dist/cjs/ui/CollapsedEditor/index.js +4 -2
  98. package/dist/cjs/ui/ColorPickerButton/index.js +2 -1
  99. package/dist/cjs/ui/ConfigPanel/Fields/Fieldset.js +3 -4
  100. package/dist/cjs/ui/ConfigPanel/FormContent.js +2 -1
  101. package/dist/cjs/ui/ContentStyles/index.js +1 -1
  102. package/dist/cjs/ui/LinkSearch/ToolbarComponents.js +3 -1
  103. package/dist/cjs/ui/ToolbarArrowKeyNavigationProvider/index.js +55 -33
  104. package/dist/cjs/utils/commands.js +25 -13
  105. package/dist/cjs/utils/input-rules.js +26 -2
  106. package/dist/cjs/version-wrapper.js +1 -1
  107. package/dist/cjs/version.json +1 -1
  108. package/dist/es2019/create-editor/ReactEditorView.js +2 -1
  109. package/dist/es2019/create-editor/create-plugins-list.js +9 -6
  110. package/dist/es2019/create-editor/messages.js +8 -0
  111. package/dist/es2019/i18n/en.js +2 -2
  112. package/dist/es2019/i18n/en_GB.js +2 -2
  113. package/dist/es2019/i18n/en_ZZ.js +2 -2
  114. package/dist/es2019/i18n/index.js +4 -4
  115. package/dist/es2019/i18n/languages.js +9 -4
  116. package/dist/es2019/labs/next/presets/mobile.js +2 -2
  117. package/dist/es2019/labs/next/presets/preset.js +28 -7
  118. package/dist/es2019/plugins/annotation/nodeviews/index.js +1 -0
  119. package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/index.js +5 -1
  120. package/dist/es2019/plugins/breakout/ui/LayoutButton.js +4 -1
  121. package/dist/es2019/plugins/card/pm-plugins/doc.js +10 -19
  122. package/dist/es2019/plugins/card/pm-plugins/main.js +4 -19
  123. package/dist/es2019/plugins/card/toolbar.js +19 -2
  124. package/dist/es2019/plugins/card/ui/EditLinkToolbar.js +8 -6
  125. package/dist/es2019/plugins/card/ui/LinkToolbarAppearance.js +7 -36
  126. package/dist/es2019/plugins/card/utils.js +15 -2
  127. package/dist/es2019/plugins/collab-edit/actions.js +3 -3
  128. package/dist/es2019/plugins/copy-button/toolbar.js +5 -3
  129. package/dist/es2019/plugins/date/index.js +0 -7
  130. package/dist/es2019/plugins/date/ui/DatePicker/index.js +1 -2
  131. package/dist/es2019/plugins/emoji/index.js +7 -13
  132. package/dist/es2019/plugins/expand/pm-plugins/main.js +3 -3
  133. package/dist/es2019/plugins/expand/toolbar.js +1 -0
  134. package/dist/es2019/plugins/extension/commands.js +10 -1
  135. package/dist/es2019/plugins/extension/pm-plugins/main.js +10 -0
  136. package/dist/es2019/plugins/extension/toolbar.js +43 -8
  137. package/dist/es2019/plugins/feature-flags-context/feature-flags-from-props.js +11 -11
  138. package/dist/es2019/plugins/find-replace/ui/FindReplaceToolbarButton.js +7 -3
  139. package/dist/es2019/plugins/floating-toolbar/index.js +15 -5
  140. package/dist/es2019/plugins/floating-toolbar/ui/CheckboxModal.js +70 -0
  141. package/dist/es2019/plugins/floating-toolbar/ui/ConfirmationModal.js +8 -27
  142. package/dist/es2019/plugins/floating-toolbar/ui/Dropdown.js +17 -4
  143. package/dist/es2019/plugins/floating-toolbar/ui/DropdownMenu.js +96 -50
  144. package/dist/es2019/plugins/floating-toolbar/ui/EmojiPickerButton.js +1 -1
  145. package/dist/es2019/plugins/floating-toolbar/ui/ScrollButtons.js +29 -76
  146. package/dist/es2019/plugins/floating-toolbar/ui/SimpleModal.js +32 -0
  147. package/dist/es2019/plugins/floating-toolbar/ui/Toolbar.js +26 -46
  148. package/dist/es2019/plugins/floating-toolbar/ui/messages.js +14 -4
  149. package/dist/es2019/plugins/floating-toolbar/utils.js +4 -17
  150. package/dist/es2019/plugins/help-dialog/index.js +2 -2
  151. package/dist/es2019/plugins/hyperlink/Toolbar.js +18 -2
  152. package/dist/es2019/plugins/hyperlink/ui/EditorLinkPicker/index.js +9 -2
  153. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +5 -9
  154. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-element-browser.js +2 -1
  155. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu-legacy.js +2 -1
  156. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu.js +2 -1
  157. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/dropdown-button.js +2 -1
  158. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/index.js +2 -0
  159. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/item.js +25 -12
  160. package/dist/es2019/plugins/layout/toolbar.js +1 -0
  161. package/dist/es2019/plugins/list/actions/outdent-list-items-selected.js +24 -4
  162. package/dist/es2019/plugins/list/commands/outdent-list.js +1 -1
  163. package/dist/es2019/plugins/list/index.js +7 -3
  164. package/dist/es2019/plugins/list/pm-plugins/input-rules/create-list-input-rule.js +13 -2
  165. package/dist/es2019/plugins/list/pm-plugins/input-rules/index.js +5 -2
  166. package/dist/es2019/plugins/list/pm-plugins/main.js +31 -11
  167. package/dist/es2019/plugins/media/index.js +38 -0
  168. package/dist/es2019/plugins/media/nodeviews/mediaGroup.js +6 -5
  169. package/dist/es2019/plugins/media/nodeviews/mediaInline.js +3 -1
  170. package/dist/es2019/plugins/media/nodeviews/mediaNodeUpdater.js +2 -2
  171. package/dist/es2019/plugins/media/nodeviews/mediaSingle.js +3 -1
  172. package/dist/es2019/plugins/media/pm-plugins/main.js +7 -0
  173. package/dist/es2019/plugins/media/toolbar/index.js +3 -0
  174. package/dist/es2019/plugins/media/utils/media-single.js +20 -3
  175. package/dist/es2019/plugins/panel/toolbar.js +1 -0
  176. package/dist/es2019/plugins/panel/utils.js +1 -1
  177. package/dist/es2019/plugins/paste/index.js +2 -1
  178. package/dist/es2019/plugins/paste/pm-plugins/analytics.js +15 -2
  179. package/dist/es2019/plugins/paste/pm-plugins/main.js +1 -1
  180. package/dist/es2019/plugins/paste/util/index.js +2 -2
  181. package/dist/es2019/plugins/placeholder/index.js +21 -47
  182. package/dist/es2019/plugins/placeholder/styles.js +1 -19
  183. package/dist/es2019/plugins/tasks-and-decisions/nodeviews/taskItem.js +6 -3
  184. package/dist/es2019/plugins/tasks-and-decisions/ui/ToolbarDecision/index.js +1 -0
  185. package/dist/es2019/plugins/text-color/ui/ToolbarTextColor/index.js +8 -7
  186. package/dist/es2019/plugins/text-formatting/ui/Toolbar/hooks/formatting-icons.js +4 -1
  187. package/dist/es2019/plugins/text-formatting/ui/Toolbar/single-toolbar-buttons.js +18 -12
  188. package/dist/es2019/plugins/toolbar-lists-indentation/ui/Toolbar.js +16 -7
  189. package/dist/es2019/plugins/type-ahead/index.js +2 -2
  190. package/dist/es2019/plugins/type-ahead/messages.js +44 -4
  191. package/dist/es2019/plugins/type-ahead/pm-plugins/decorations.js +0 -1
  192. package/dist/es2019/plugins/type-ahead/ui/InputQuery.js +17 -1
  193. package/dist/es2019/plugins/type-ahead/ui/TypeAheadList.js +10 -5
  194. package/dist/es2019/plugins/type-ahead/ui/TypeAheadListItem.js +8 -5
  195. package/dist/es2019/plugins/type-ahead/ui/TypeAheadPopup.js +2 -1
  196. package/dist/es2019/plugins/type-ahead/utils.js +38 -0
  197. package/dist/es2019/plugins/undo-redo/ui/ToolbarUndoRedo/index.js +6 -3
  198. package/dist/es2019/ui/Alignment/AlignmentButton/index.js +4 -2
  199. package/dist/es2019/ui/Appearance/Comment/Toolbar.js +2 -2
  200. package/dist/es2019/ui/Appearance/FullPage/FullPageToolbar.js +2 -1
  201. package/dist/es2019/ui/CollapsedEditor/index.js +3 -2
  202. package/dist/es2019/ui/ColorPickerButton/index.js +2 -1
  203. package/dist/es2019/ui/ConfigPanel/Fields/Fieldset.js +4 -5
  204. package/dist/es2019/ui/ConfigPanel/FormContent.js +3 -3
  205. package/dist/es2019/ui/ContentStyles/index.js +7 -2
  206. package/dist/es2019/ui/LinkSearch/ToolbarComponents.js +1 -0
  207. package/dist/es2019/ui/ToolbarArrowKeyNavigationProvider/index.js +56 -34
  208. package/dist/es2019/utils/commands.js +26 -14
  209. package/dist/es2019/utils/input-rules.js +22 -1
  210. package/dist/es2019/version-wrapper.js +1 -1
  211. package/dist/es2019/version.json +1 -1
  212. package/dist/esm/create-editor/ReactEditorView.js +2 -1
  213. package/dist/esm/create-editor/create-plugins-list.js +9 -6
  214. package/dist/esm/create-editor/messages.js +8 -0
  215. package/dist/esm/i18n/en.js +2 -2
  216. package/dist/esm/i18n/en_GB.js +2 -2
  217. package/dist/esm/i18n/en_ZZ.js +2 -2
  218. package/dist/esm/i18n/index.js +4 -4
  219. package/dist/esm/i18n/languages.js +9 -4
  220. package/dist/esm/labs/next/presets/mobile.js +2 -2
  221. package/dist/esm/labs/next/presets/preset.js +36 -6
  222. package/dist/esm/plugins/annotation/nodeviews/index.js +1 -0
  223. package/dist/esm/plugins/block-type/ui/ToolbarBlockType/index.js +5 -1
  224. package/dist/esm/plugins/breakout/ui/LayoutButton.js +4 -1
  225. package/dist/esm/plugins/card/pm-plugins/doc.js +10 -20
  226. package/dist/esm/plugins/card/pm-plugins/main.js +4 -17
  227. package/dist/esm/plugins/card/toolbar.js +24 -8
  228. package/dist/esm/plugins/card/ui/EditLinkToolbar.js +8 -6
  229. package/dist/esm/plugins/card/ui/LinkToolbarAppearance.js +9 -39
  230. package/dist/esm/plugins/card/utils.js +15 -2
  231. package/dist/esm/plugins/collab-edit/actions.js +3 -3
  232. package/dist/esm/plugins/copy-button/toolbar.js +5 -3
  233. package/dist/esm/plugins/date/index.js +1 -6
  234. package/dist/esm/plugins/date/ui/DatePicker/index.js +1 -2
  235. package/dist/esm/plugins/emoji/index.js +7 -13
  236. package/dist/esm/plugins/expand/pm-plugins/main.js +3 -3
  237. package/dist/esm/plugins/expand/toolbar.js +1 -0
  238. package/dist/esm/plugins/extension/commands.js +12 -1
  239. package/dist/esm/plugins/extension/pm-plugins/main.js +10 -0
  240. package/dist/esm/plugins/extension/toolbar.js +50 -8
  241. package/dist/esm/plugins/feature-flags-context/feature-flags-from-props.js +11 -11
  242. package/dist/esm/plugins/find-replace/ui/FindReplaceToolbarButton.js +7 -3
  243. package/dist/esm/plugins/floating-toolbar/index.js +16 -4
  244. package/dist/esm/plugins/floating-toolbar/ui/CheckboxModal.js +75 -0
  245. package/dist/esm/plugins/floating-toolbar/ui/ConfirmationModal.js +11 -25
  246. package/dist/esm/plugins/floating-toolbar/ui/Dropdown.js +17 -4
  247. package/dist/esm/plugins/floating-toolbar/ui/DropdownMenu.js +100 -47
  248. package/dist/esm/plugins/floating-toolbar/ui/EmojiPickerButton.js +1 -1
  249. package/dist/esm/plugins/floating-toolbar/ui/ScrollButtons.js +29 -108
  250. package/dist/esm/plugins/floating-toolbar/ui/SimpleModal.js +30 -0
  251. package/dist/esm/plugins/floating-toolbar/ui/Toolbar.js +27 -47
  252. package/dist/esm/plugins/floating-toolbar/ui/messages.js +13 -3
  253. package/dist/esm/plugins/floating-toolbar/utils.js +4 -17
  254. package/dist/esm/plugins/help-dialog/index.js +3 -2
  255. package/dist/esm/plugins/hyperlink/Toolbar.js +20 -2
  256. package/dist/esm/plugins/hyperlink/ui/EditorLinkPicker/index.js +10 -3
  257. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +5 -10
  258. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-element-browser.js +2 -1
  259. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu-legacy.js +2 -1
  260. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/block-insert-menu.js +2 -1
  261. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/dropdown-button.js +2 -1
  262. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/index.js +2 -0
  263. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/item.js +25 -12
  264. package/dist/esm/plugins/layout/toolbar.js +1 -0
  265. package/dist/esm/plugins/list/actions/outdent-list-items-selected.js +30 -4
  266. package/dist/esm/plugins/list/commands/outdent-list.js +1 -1
  267. package/dist/esm/plugins/list/index.js +7 -3
  268. package/dist/esm/plugins/list/pm-plugins/input-rules/create-list-input-rule.js +13 -2
  269. package/dist/esm/plugins/list/pm-plugins/input-rules/index.js +5 -2
  270. package/dist/esm/plugins/list/pm-plugins/main.js +31 -11
  271. package/dist/esm/plugins/media/index.js +33 -0
  272. package/dist/esm/plugins/media/nodeviews/mediaGroup.js +7 -6
  273. package/dist/esm/plugins/media/nodeviews/mediaInline.js +3 -1
  274. package/dist/esm/plugins/media/nodeviews/mediaNodeUpdater.js +70 -64
  275. package/dist/esm/plugins/media/nodeviews/mediaSingle.js +3 -1
  276. package/dist/esm/plugins/media/pm-plugins/main.js +7 -0
  277. package/dist/esm/plugins/media/toolbar/index.js +3 -0
  278. package/dist/esm/plugins/media/utils/media-single.js +18 -3
  279. package/dist/esm/plugins/panel/toolbar.js +1 -0
  280. package/dist/esm/plugins/panel/utils.js +1 -1
  281. package/dist/esm/plugins/paste/index.js +2 -1
  282. package/dist/esm/plugins/paste/pm-plugins/analytics.js +15 -2
  283. package/dist/esm/plugins/paste/pm-plugins/main.js +1 -1
  284. package/dist/esm/plugins/paste/util/index.js +2 -2
  285. package/dist/esm/plugins/placeholder/index.js +23 -45
  286. package/dist/esm/plugins/placeholder/styles.js +1 -2
  287. package/dist/esm/plugins/tasks-and-decisions/nodeviews/taskItem.js +6 -3
  288. package/dist/esm/plugins/tasks-and-decisions/ui/ToolbarDecision/index.js +1 -0
  289. package/dist/esm/plugins/text-color/ui/ToolbarTextColor/index.js +9 -5
  290. package/dist/esm/plugins/text-formatting/ui/Toolbar/hooks/formatting-icons.js +4 -1
  291. package/dist/esm/plugins/text-formatting/ui/Toolbar/single-toolbar-buttons.js +5 -1
  292. package/dist/esm/plugins/toolbar-lists-indentation/ui/Toolbar.js +16 -7
  293. package/dist/esm/plugins/type-ahead/index.js +2 -2
  294. package/dist/esm/plugins/type-ahead/messages.js +44 -4
  295. package/dist/esm/plugins/type-ahead/pm-plugins/decorations.js +0 -1
  296. package/dist/esm/plugins/type-ahead/ui/InputQuery.js +17 -1
  297. package/dist/esm/plugins/type-ahead/ui/TypeAheadList.js +10 -5
  298. package/dist/esm/plugins/type-ahead/ui/TypeAheadListItem.js +8 -5
  299. package/dist/esm/plugins/type-ahead/ui/TypeAheadPopup.js +2 -1
  300. package/dist/esm/plugins/type-ahead/utils.js +38 -0
  301. package/dist/esm/plugins/undo-redo/ui/ToolbarUndoRedo/index.js +6 -3
  302. package/dist/esm/ui/Alignment/AlignmentButton/index.js +4 -2
  303. package/dist/esm/ui/Appearance/Comment/Toolbar.js +2 -2
  304. package/dist/esm/ui/Appearance/FullPage/FullPageToolbar.js +2 -1
  305. package/dist/esm/ui/CollapsedEditor/index.js +3 -2
  306. package/dist/esm/ui/ColorPickerButton/index.js +2 -1
  307. package/dist/esm/ui/ConfigPanel/Fields/Fieldset.js +4 -5
  308. package/dist/esm/ui/ConfigPanel/FormContent.js +3 -3
  309. package/dist/esm/ui/ContentStyles/index.js +1 -1
  310. package/dist/esm/ui/LinkSearch/ToolbarComponents.js +1 -0
  311. package/dist/esm/ui/ToolbarArrowKeyNavigationProvider/index.js +56 -34
  312. package/dist/esm/utils/commands.js +25 -13
  313. package/dist/esm/utils/input-rules.js +23 -1
  314. package/dist/esm/version-wrapper.js +1 -1
  315. package/dist/esm/version.json +1 -1
  316. package/dist/types/create-editor/messages.d.ts +7 -0
  317. package/dist/types/i18n/index.d.ts +4 -4
  318. package/dist/types/i18n/languages.d.ts +8 -3
  319. package/dist/types/labs/next/presets/cxhtml.d.ts +1 -1
  320. package/dist/types/labs/next/presets/default.d.ts +2 -2
  321. package/dist/types/labs/next/presets/mobile.d.ts +1 -1
  322. package/dist/types/labs/next/presets/preset.d.ts +10 -6
  323. package/dist/types/plugins/alignment/index.d.ts +2 -2
  324. package/dist/types/plugins/analytics/plugin.d.ts +2 -2
  325. package/dist/types/plugins/annotation/index.d.ts +2 -2
  326. package/dist/types/plugins/avatar-group/index.d.ts +4 -3
  327. package/dist/types/plugins/base/index.d.ts +2 -2
  328. package/dist/types/plugins/before-primaryToolbar/index.d.ts +4 -3
  329. package/dist/types/plugins/block-type/index.d.ts +2 -2
  330. package/dist/types/plugins/block-type/ui/ToolbarBlockType/index.d.ts +1 -1
  331. package/dist/types/plugins/breakout/index.d.ts +2 -2
  332. package/dist/types/plugins/caption/index.d.ts +2 -2
  333. package/dist/types/plugins/card/index.d.ts +2 -2
  334. package/dist/types/plugins/card/pm-plugins/doc.d.ts +4 -4
  335. package/dist/types/plugins/card/pm-plugins/main.d.ts +1 -1
  336. package/dist/types/plugins/card/ui/EditLinkToolbar.d.ts +1 -1
  337. package/dist/types/plugins/card/ui/LinkToolbarAppearance.d.ts +5 -5
  338. package/dist/types/plugins/card/utils.d.ts +2 -1
  339. package/dist/types/plugins/clear-marks-on-change-to-empty-document/index.d.ts +2 -2
  340. package/dist/types/plugins/clipboard/index.d.ts +2 -2
  341. package/dist/types/plugins/code-bidi-warning/index.d.ts +4 -3
  342. package/dist/types/plugins/code-block/index.d.ts +2 -2
  343. package/dist/types/plugins/collab-edit/actions.d.ts +1 -1
  344. package/dist/types/plugins/collab-edit/index.d.ts +2 -2
  345. package/dist/types/plugins/context-panel/index.d.ts +2 -2
  346. package/dist/types/plugins/copy-button/index.d.ts +2 -2
  347. package/dist/types/plugins/custom-autoformat/index.d.ts +2 -2
  348. package/dist/types/plugins/data-consumer/index.d.ts +2 -2
  349. package/dist/types/plugins/date/index.d.ts +2 -2
  350. package/dist/types/plugins/date/ui/DatePicker/index.d.ts +0 -1
  351. package/dist/types/plugins/editor-disabled/index.d.ts +2 -2
  352. package/dist/types/plugins/emoji/index.d.ts +2 -2
  353. package/dist/types/plugins/emoji/types.d.ts +2 -1
  354. package/dist/types/plugins/expand/index.d.ts +2 -2
  355. package/dist/types/plugins/expand/pm-plugins/main.d.ts +1 -0
  356. package/dist/types/plugins/extension/commands.d.ts +2 -0
  357. package/dist/types/plugins/extension/index.d.ts +2 -2
  358. package/dist/types/plugins/extension/toolbar.d.ts +10 -0
  359. package/dist/types/plugins/fake-text-cursor/index.d.ts +2 -2
  360. package/dist/types/plugins/feature-flags-context/index.d.ts +2 -2
  361. package/dist/types/plugins/feedback-dialog/index.d.ts +3 -2
  362. package/dist/types/plugins/find-replace/index.d.ts +4 -3
  363. package/dist/types/plugins/floating-toolbar/index.d.ts +2 -2
  364. package/dist/types/plugins/floating-toolbar/ui/CheckboxModal.d.ts +4 -0
  365. package/dist/types/plugins/floating-toolbar/ui/ConfirmationModal.d.ts +1 -8
  366. package/dist/types/plugins/floating-toolbar/ui/Dropdown.d.ts +3 -0
  367. package/dist/types/plugins/floating-toolbar/ui/DropdownMenu.d.ts +4 -0
  368. package/dist/types/plugins/floating-toolbar/ui/SimpleModal.d.ts +4 -0
  369. package/dist/types/plugins/floating-toolbar/ui/messages.d.ts +10 -0
  370. package/dist/types/plugins/floating-toolbar/ui/types.d.ts +1 -1
  371. package/dist/types/plugins/floating-toolbar/utils.d.ts +2 -3
  372. package/dist/types/plugins/fragment/index.d.ts +2 -2
  373. package/dist/types/plugins/grid/index.d.ts +2 -2
  374. package/dist/types/plugins/help-dialog/index.d.ts +2 -3
  375. package/dist/types/plugins/history/index.d.ts +2 -2
  376. package/dist/types/plugins/hyperlink/index.d.ts +2 -2
  377. package/dist/types/plugins/hyperlink/ui/EditorLinkPicker/index.d.ts +7 -2
  378. package/dist/types/plugins/hyperlink/ui/HyperlinkAddToolbar/index.d.ts +2 -1
  379. package/dist/types/plugins/image-upload/index.d.ts +2 -2
  380. package/dist/types/plugins/indentation/index.d.ts +2 -2
  381. package/dist/types/plugins/insert-block/index.d.ts +2 -2
  382. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/dropdown-button.d.ts +1 -0
  383. package/dist/types/plugins/jira-issue/index.d.ts +2 -2
  384. package/dist/types/plugins/layout/index.d.ts +2 -2
  385. package/dist/types/plugins/list/actions/outdent-list-items-selected.d.ts +2 -2
  386. package/dist/types/plugins/list/index.d.ts +3 -2
  387. package/dist/types/plugins/list/pm-plugins/input-rules/create-list-input-rule.d.ts +3 -1
  388. package/dist/types/plugins/list/pm-plugins/main.d.ts +2 -2
  389. package/dist/types/plugins/list/types.d.ts +2 -0
  390. package/dist/types/plugins/macro/index.d.ts +2 -2
  391. package/dist/types/plugins/max-content-size/index.d.ts +2 -2
  392. package/dist/types/plugins/media/index.d.ts +2 -2
  393. package/dist/types/plugins/media/nodeviews/mediaNodeUpdater.d.ts +2 -1
  394. package/dist/types/plugins/media/pm-plugins/main.d.ts +1 -0
  395. package/dist/types/plugins/media/pm-plugins/types.d.ts +1 -0
  396. package/dist/types/plugins/mentions/index.d.ts +2 -2
  397. package/dist/types/plugins/mobile-dimensions/index.d.ts +2 -2
  398. package/dist/types/plugins/mobile-selection/mobile-selection-plugin.d.ts +2 -2
  399. package/dist/types/plugins/panel/index.d.ts +2 -2
  400. package/dist/types/plugins/paste/index.d.ts +3 -2
  401. package/dist/types/plugins/paste/pm-plugins/analytics.d.ts +1 -0
  402. package/dist/types/plugins/placeholder/index.d.ts +4 -4
  403. package/dist/types/plugins/placeholder/styles.d.ts +0 -1
  404. package/dist/types/plugins/placeholder-text/index.d.ts +2 -2
  405. package/dist/types/plugins/quick-insert/index.d.ts +2 -2
  406. package/dist/types/plugins/rule/index.d.ts +2 -2
  407. package/dist/types/plugins/save-on-enter/index.d.ts +3 -2
  408. package/dist/types/plugins/scroll-into-view/index.d.ts +2 -2
  409. package/dist/types/plugins/selection/index.d.ts +2 -2
  410. package/dist/types/plugins/status/index.d.ts +2 -2
  411. package/dist/types/plugins/submit-editor/index.d.ts +4 -2
  412. package/dist/types/plugins/tasks-and-decisions/index.d.ts +2 -2
  413. package/dist/types/plugins/text-color/index.d.ts +3 -2
  414. package/dist/types/plugins/text-formatting/index.d.ts +2 -2
  415. package/dist/types/plugins/toolbar-lists-indentation/index.d.ts +4 -3
  416. package/dist/types/plugins/type-ahead/index.d.ts +2 -2
  417. package/dist/types/plugins/type-ahead/messages.d.ts +41 -1
  418. package/dist/types/plugins/type-ahead/ui/TypeAheadList.d.ts +3 -1
  419. package/dist/types/plugins/type-ahead/ui/TypeAheadListItem.d.ts +1 -0
  420. package/dist/types/plugins/type-ahead/utils.d.ts +7 -1
  421. package/dist/types/plugins/undo-redo/index.d.ts +2 -2
  422. package/dist/types/plugins/unsupported-content/index.d.ts +2 -2
  423. package/dist/types/plugins/view-update-subscription/index.d.ts +2 -2
  424. package/dist/types/plugins/width/index.d.ts +2 -2
  425. package/dist/types/test-utils.d.ts +2 -1
  426. package/dist/types/types/editor-plugin.d.ts +1 -1
  427. package/dist/types/types/editor-props.d.ts +0 -2
  428. package/dist/types/types/index.d.ts +1 -1
  429. package/dist/types/ui/Appearance/FullPage/StyledComponents.d.ts +3 -3
  430. package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +1 -1
  431. package/dist/types/ui/ConfigPanel/Fields/Fieldset.d.ts +2 -1
  432. package/dist/types/ui/ConfigPanel/FormContent.d.ts +2 -23
  433. package/dist/types/ui/ConfigPanel/types.d.ts +22 -0
  434. package/dist/types/ui/ContentStyles/index.d.ts +2 -2
  435. package/dist/types/ui/LinkSearch/ToolbarComponents.d.ts +1 -0
  436. package/dist/types/ui/ToolbarArrowKeyNavigationProvider/index.d.ts +4 -1
  437. package/package.json +24 -24
  438. package/report.api.md +25 -16
  439. package/dist/cjs/plugins/card/ui/LinkToolbarIconDropdown.js +0 -181
  440. package/dist/cjs/plugins/card/ui/link-toolbar-icon-dropdown-options.js +0 -66
  441. package/dist/cjs/plugins/emoji/ui/EmojiContextProvider/index.js +0 -61
  442. package/dist/es2019/plugins/card/ui/LinkToolbarIconDropdown.js +0 -151
  443. package/dist/es2019/plugins/card/ui/link-toolbar-icon-dropdown-options.js +0 -51
  444. package/dist/es2019/plugins/emoji/ui/EmojiContextProvider/index.js +0 -21
  445. package/dist/esm/plugins/card/ui/LinkToolbarIconDropdown.js +0 -161
  446. package/dist/esm/plugins/card/ui/link-toolbar-icon-dropdown-options.js +0 -51
  447. package/dist/esm/plugins/emoji/ui/EmojiContextProvider/index.js +0 -46
  448. package/dist/types/plugins/card/ui/LinkToolbarIconDropdown.d.ts +0 -25
  449. package/dist/types/plugins/card/ui/link-toolbar-icon-dropdown-options.d.ts +0 -5
  450. package/dist/types/plugins/emoji/ui/EmojiContextProvider/index.d.ts +0 -13
@@ -41,7 +41,7 @@ export function createPlugin(dispatch, imageEnabled) {
41
41
  });
42
42
  }
43
43
 
44
- const helpDialog = legacyImageUploadProvider => ({
44
+ const helpDialog = (imageUploadProviderExists = false) => ({
45
45
  name: 'helpDialog',
46
46
 
47
47
  pmPlugins() {
@@ -49,7 +49,7 @@ const helpDialog = legacyImageUploadProvider => ({
49
49
  name: 'helpDialog',
50
50
  plugin: ({
51
51
  dispatch
52
- }) => createPlugin(dispatch, !!legacyImageUploadProvider)
52
+ }) => createPlugin(dispatch, imageUploadProviderExists)
53
53
  }, {
54
54
  name: 'helpDialogKeymap',
55
55
  plugin: () => keymapPlugin()
@@ -8,7 +8,7 @@ import OpenIcon from '@atlaskit/icon/glyph/shortcut';
8
8
  import { normalizeUrl } from './utils';
9
9
  import { linkToolbarMessages as linkToolbarCommonMessages, linkMessages } from '../../messages';
10
10
  import { isSafeUrl } from '@atlaskit/adf-schema';
11
- import { RECENT_SEARCH_HEIGHT_IN_PX, RECENT_SEARCH_WIDTH_IN_PX } from '../../ui/LinkSearch/ToolbarComponents';
11
+ import { LINKPICKER_HEIGHT_IN_PX, RECENT_SEARCH_HEIGHT_IN_PX, RECENT_SEARCH_WIDTH_IN_PX } from '../../ui/LinkSearch/ToolbarComponents';
12
12
  import { HyperlinkToolbarAppearance } from './HyperlinkToolbarAppearance';
13
13
  import { addAnalytics, ACTION_SUBJECT_ID } from '../analytics';
14
14
  import { buildVisitedLinkPayload, buildOpenedSettingsPayload } from '../../utils/linking-utils';
@@ -73,6 +73,16 @@ export const getToolbarConfig = options => (state, intl, providerFactory) => {
73
73
  formatMessage
74
74
  } = intl;
75
75
  const linkState = stateKey.getState(state);
76
+ /**
77
+ * Enable focus trap only if feature flag is enabled AND for the new version of the picker
78
+ */
79
+
80
+ const {
81
+ lpLinkPicker,
82
+ lpLinkPickerFocusTrap,
83
+ preventPopupOverflow
84
+ } = getFeatureFlags(state);
85
+ const shouldEnableFocusTrap = lpLinkPicker && lpLinkPickerFocusTrap;
76
86
 
77
87
  if (linkState && linkState.activeLinkMark) {
78
88
  const {
@@ -177,6 +187,8 @@ export const getToolbarConfig = options => (state, intl, providerFactory) => {
177
187
  case 'EDIT_INSERTED':
178
188
  case 'INSERT':
179
189
  {
190
+ var _options$linkPicker, _options$linkPicker$p;
191
+
180
192
  let link;
181
193
 
182
194
  if (isEditLink(activeLinkMark) && activeLinkMark.node) {
@@ -185,9 +197,12 @@ export const getToolbarConfig = options => (state, intl, providerFactory) => {
185
197
  }
186
198
 
187
199
  const displayText = isEditLink(activeLinkMark) ? getLinkText(activeLinkMark, state) : linkState.activeText;
200
+ const popupHeight = lpLinkPicker && Boolean(options === null || options === void 0 ? void 0 : (_options$linkPicker = options.linkPicker) === null || _options$linkPicker === void 0 ? void 0 : (_options$linkPicker$p = _options$linkPicker.plugins) === null || _options$linkPicker$p === void 0 ? void 0 : _options$linkPicker$p.length) ? LINKPICKER_HEIGHT_IN_PX : RECENT_SEARCH_HEIGHT_IN_PX;
188
201
  return { ...hyperLinkToolbar,
189
- height: RECENT_SEARCH_HEIGHT_IN_PX,
202
+ preventPopupOverflow,
203
+ height: popupHeight,
190
204
  width: RECENT_SEARCH_WIDTH_IN_PX,
205
+ focusTrap: shouldEnableFocusTrap,
191
206
  items: [{
192
207
  type: 'custom',
193
208
  fallback: [],
@@ -204,6 +219,7 @@ export const getToolbarConfig = options => (state, intl, providerFactory) => {
204
219
  displayUrl: link,
205
220
  displayText: displayText || '',
206
221
  providerFactory: providerFactory,
222
+ onCancel: () => view.focus(),
207
223
  onSubmit: (href, title = '', displayText, inputMethod) => {
208
224
  var _options$cardOptions;
209
225
 
@@ -4,17 +4,24 @@ import { LinkPicker } from '@atlaskit/link-picker';
4
4
  import { hideLinkToolbar as cardHideLinkToolbar } from '../../../card/pm-plugins/actions';
5
5
  import { hideLinkToolbar } from '../../commands';
6
6
  import { useEscapeClickaway } from './useEscapeClickaway';
7
+ /**
8
+ * Returns a type that matches T but where keys (K) are now optional
9
+ */
10
+
7
11
  export const EditorLinkPicker = ({
8
12
  view,
13
+ onCancel,
9
14
  ...restProps
10
15
  }) => {
11
16
  const onEscape = useCallback(() => {
12
17
  hideLinkToolbar()(view.state, view.dispatch);
13
18
  view.dispatch(cardHideLinkToolbar(view.state.tr));
14
- }, [view]);
19
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel();
20
+ }, [view, onCancel]);
15
21
  const onClickAway = useCallback(() => {
16
22
  hideLinkToolbar()(view.state, view.dispatch);
17
- }, [view]);
23
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel();
24
+ }, [view, onCancel]);
18
25
  const ref = useEscapeClickaway(onEscape, onClickAway);
19
26
  return /*#__PURE__*/React.createElement("div", {
20
27
  ref: ref
@@ -29,7 +29,8 @@ export default class HyperlinkAddToolbar extends React.PureComponent {
29
29
  displayText,
30
30
  displayUrl,
31
31
  providerFactory,
32
- view
32
+ view,
33
+ onCancel
33
34
  } = this.props;
34
35
  return /*#__PURE__*/React.createElement(WithProviders, {
35
36
  providers: ['activityProvider', 'searchProvider'],
@@ -45,23 +46,18 @@ export default class HyperlinkAddToolbar extends React.PureComponent {
45
46
  render: ({
46
47
  hyperlinkPluginState
47
48
  }) => {
48
- var _linkPickerOptions$pl;
49
-
50
49
  const {
51
50
  lpLinkPicker
52
51
  } = getFeatureFlags(view.state);
53
- /**
54
- * If activityProvider or searchProvider are present then only enable if there are plugins supplied to
55
- * faciliate providing link search capabilities
56
- */
57
52
 
58
- if (lpLinkPicker && (!activityProvider && !searchProvider || Boolean(linkPickerOptions === null || linkPickerOptions === void 0 ? void 0 : (_linkPickerOptions$pl = linkPickerOptions.plugins) === null || _linkPickerOptions$pl === void 0 ? void 0 : _linkPickerOptions$pl.length))) {
53
+ if (lpLinkPicker) {
59
54
  return /*#__PURE__*/React.createElement(EditorLinkPicker, _extends({
60
55
  view: view
61
56
  }, linkPickerOptions, {
62
57
  url: displayUrl,
63
58
  displayText: displayText,
64
- onSubmit: onSubmitInterface(onSubmit)
59
+ onSubmit: onSubmitInterface(onSubmit),
60
+ onCancel: onCancel
65
61
  }));
66
62
  }
67
63
 
@@ -24,6 +24,7 @@ export const BlockInsertElementBrowser = props => {
24
24
  disabled: props.disabled,
25
25
  onClick: props.onClick,
26
26
  spacing: props.spacing,
27
- label: props.label
27
+ label: props.label,
28
+ "aria-keyshortcuts": "/"
28
29
  }));
29
30
  };
@@ -28,6 +28,7 @@ export const BlockInsertMenuLegacy = props => {
28
28
  disabled: props.disabled,
29
29
  onClick: props.onClick,
30
30
  spacing: props.spacing,
31
- label: props.label
31
+ label: props.label,
32
+ "aria-keyshortcuts": "/"
32
33
  }));
33
34
  };
@@ -16,7 +16,8 @@ export const BlockInsertMenu = props => {
16
16
  disabled: props.disabled,
17
17
  onClick: props.onClick,
18
18
  spacing: props.spacing,
19
- label: props.label
19
+ label: props.label,
20
+ "aria-keyshortcuts": "/"
20
21
  }));
21
22
  }
22
23
 
@@ -24,7 +24,8 @@ export const DropDownButton = /*#__PURE__*/React.memo(props => jsx(ToolbarButton
24
24
  spacing: props.spacing,
25
25
  "aria-expanded": props['aria-expanded'],
26
26
  "aria-haspopup": props['aria-haspopup'],
27
- "aria-label": props.label,
27
+ "aria-keyshortcuts": props['aria-keyshortcuts'],
28
+ "aria-label": `${props.label} /`,
28
29
  iconBefore: jsx(DropDownButtonIcon, {
29
30
  label: ""
30
31
  }),
@@ -547,6 +547,7 @@ export class ToolbarInsertBlock extends React.PureComponent {
547
547
  css: buttonGroupStyle
548
548
  }, buttons.map(btn => jsx(ToolbarButton, {
549
549
  item: btn,
550
+ testId: String(btn.content),
550
551
  ref: btn.value.name === 'emoji' ? this.handleEmojiButtonRef : noop,
551
552
  key: btn.value.name,
552
553
  spacing: isReducedSpacing ? 'none' : 'default',
@@ -556,6 +557,7 @@ export class ToolbarInsertBlock extends React.PureComponent {
556
557
  title: btn.title,
557
558
  "aria-label": btn['aria-label'],
558
559
  "aria-haspopup": btn['aria-haspopup'],
560
+ "aria-keyshortcuts": btn['aria-keyshortcuts'],
559
561
  onItemClick: this.insertToolbarMenuItem
560
562
  })), jsx("span", {
561
563
  css: wrapperStyle
@@ -22,6 +22,7 @@ import QuoteIcon from '@atlaskit/icon/glyph/quote';
22
22
  import { shortcutStyle } from '../../../../ui/styles';
23
23
  import { tooltip, addLink, toggleTable } from '../../../../keymaps';
24
24
  import { shallowEquals } from './shallow-equals';
25
+ import { getAriaKeyshortcuts } from '@atlaskit/editor-common/keymaps';
25
26
 
26
27
  const from = init => ({
27
28
  content: init.content,
@@ -35,8 +36,9 @@ const from = init => ({
35
36
  elemAfter: init.shortcut ? jsx("div", {
36
37
  css: shortcutStyle
37
38
  }, init.shortcut) : undefined,
38
- 'aria-label': init.content,
39
+ 'aria-label': init.shortcut ? init.content + ' ' + init.shortcut : init.content,
39
40
  'aria-haspopup': init['aria-haspopup'],
41
+ 'aria-keyshortcuts': init['aria-keyshortcuts'],
40
42
  shortcut: init.shortcut,
41
43
  isDisabled: init.disabled
42
44
  });
@@ -50,7 +52,8 @@ export const action = mem(init => {
50
52
  disabled: init.disabled,
51
53
  name: 'action',
52
54
  shortcut: '[]',
53
- Icon: TaskIcon
55
+ Icon: TaskIcon,
56
+ 'aria-keyshortcuts': '[ ] Space'
54
57
  });
55
58
  });
56
59
  export const link = mem(init => from({
@@ -60,7 +63,8 @@ export const link = mem(init => from({
60
63
  name: 'link',
61
64
  shortcut: tooltip(addLink),
62
65
  Icon: LinkIcon,
63
- 'aria-haspopup': init['aria-haspopup']
66
+ 'aria-haspopup': init['aria-haspopup'],
67
+ 'aria-keyshortcuts': getAriaKeyshortcuts(addLink)
64
68
  }));
65
69
  export const media = mem(init => from({
66
70
  content: init.content,
@@ -83,7 +87,8 @@ export const mention = mem(init => from({
83
87
  name: 'mention',
84
88
  Icon: MentionIcon,
85
89
  shortcut: '@',
86
- 'aria-haspopup': init['aria-haspopup']
90
+ 'aria-haspopup': init['aria-haspopup'],
91
+ 'aria-keyshortcuts': 'Shift+2 Space'
87
92
  }));
88
93
  export const emoji = mem(init => from({
89
94
  content: init.content,
@@ -92,7 +97,8 @@ export const emoji = mem(init => from({
92
97
  name: 'emoji',
93
98
  Icon: EmojiIcon,
94
99
  shortcut: ':',
95
- 'aria-haspopup': init['aria-haspopup']
100
+ 'aria-haspopup': init['aria-haspopup'],
101
+ 'aria-keyshortcuts': 'Shift+;'
96
102
  }));
97
103
  export const table = mem(init => from({
98
104
  content: init.content,
@@ -100,7 +106,8 @@ export const table = mem(init => from({
100
106
  disabled: init.disabled,
101
107
  name: 'table',
102
108
  Icon: TableIcon,
103
- shortcut: tooltip(toggleTable)
109
+ shortcut: tooltip(toggleTable),
110
+ 'aria-keyshortcuts': getAriaKeyshortcuts(toggleTable)
104
111
  }));
105
112
  export const layout = mem(init => from({
106
113
  content: init.content,
@@ -115,7 +122,8 @@ export const codeblock = mem(init => from({
115
122
  disabled: init.disabled,
116
123
  name: 'codeblock',
117
124
  Icon: CodeIcon,
118
- shortcut: init.shortcut
125
+ shortcut: init.shortcut,
126
+ 'aria-keyshortcuts': getAriaKeyshortcuts(init.shortcut)
119
127
  }));
120
128
  export const panel = mem(init => from({
121
129
  content: init.content,
@@ -123,7 +131,8 @@ export const panel = mem(init => from({
123
131
  disabled: init.disabled,
124
132
  name: 'panel',
125
133
  Icon: InfoIcon,
126
- shortcut: init.shortcut
134
+ shortcut: init.shortcut,
135
+ 'aria-keyshortcuts': getAriaKeyshortcuts(init.shortcut)
127
136
  }));
128
137
  export const blockquote = mem(init => from({
129
138
  content: init.content,
@@ -131,7 +140,8 @@ export const blockquote = mem(init => from({
131
140
  disabled: init.disabled,
132
141
  name: 'blockquote',
133
142
  Icon: QuoteIcon,
134
- shortcut: init.shortcut
143
+ shortcut: init.shortcut,
144
+ 'aria-keyshortcuts': 'Shift+. Space'
135
145
  }));
136
146
  export const decision = mem(init => from({
137
147
  content: init.content,
@@ -139,7 +149,8 @@ export const decision = mem(init => from({
139
149
  disabled: init.disabled,
140
150
  name: 'decision',
141
151
  Icon: DecisionIcon,
142
- shortcut: '<>'
152
+ shortcut: '<>',
153
+ 'aria-keyshortcuts': 'Shift+, Shift+. Space'
143
154
  }));
144
155
  export const horizontalrule = mem(init => from({
145
156
  content: init.content,
@@ -147,7 +158,8 @@ export const horizontalrule = mem(init => from({
147
158
  disabled: init.disabled,
148
159
  name: 'horizontalrule',
149
160
  Icon: HorizontalRuleIcon,
150
- shortcut: '---'
161
+ shortcut: '---',
162
+ 'aria-keyshortcuts': '- - -'
151
163
  }));
152
164
  export const expand = mem(init => from({
153
165
  content: init.content,
@@ -162,7 +174,8 @@ export const date = mem(init => from({
162
174
  disabled: init.disabled,
163
175
  name: 'date',
164
176
  Icon: DateIcon,
165
- shortcut: '//'
177
+ shortcut: '//',
178
+ 'aria-keyshortcuts': '/ / Enter'
166
179
  }));
167
180
  export const placeholder = mem(init => from({
168
181
  content: init.content,
@@ -69,6 +69,7 @@ export const buildToolbar = (state, intl, pos, _allowBreakout, addSidebarLayouts
69
69
  id: 'editor.layout.delete',
70
70
  type: 'button',
71
71
  appearance: 'danger',
72
+ focusEditoronEnter: true,
72
73
  icon: RemoveIcon,
73
74
  testId: commonMessages.remove.id,
74
75
  title: intl.formatMessage(commonMessages.remove),
@@ -1,11 +1,13 @@
1
1
  import { Selection, TextSelection, NodeSelection } from 'prosemirror-state';
2
2
  import { NodeRange, Slice, Fragment } from 'prosemirror-model';
3
3
  import { liftTarget, ReplaceAroundStep, ReplaceStep } from 'prosemirror-transform';
4
+ import { getOrderFromOrderedListNode } from '@atlaskit/editor-common/utils';
4
5
  import { isListNode, isListItemNode, joinSiblingLists, JoinDirection } from '../utils/node';
5
6
  import { findFirstParentListItemNode, findRootParentListNode } from '../utils/find';
6
7
  import { normalizeListItemsSelection, createListNodeRange } from '../utils/selection';
7
8
  import { GapCursorSelection } from '../../selection/gap-cursor-selection';
8
- export const outdentListItemsSelected = tr => {
9
+ import { getFeatureFlags } from '../../feature-flags-context';
10
+ export const outdentListItemsSelected = (tr, state) => {
9
11
  const originalSelection = tr.selection;
10
12
  const normalizedSelection = normalizeListItemsSelection({
11
13
  selection: tr.selection,
@@ -47,7 +49,8 @@ export const outdentListItemsSelected = tr => {
47
49
  } else {
48
50
  extractListItemsRangeFromList({
49
51
  tr,
50
- range: mappedRange
52
+ range: mappedRange,
53
+ state
51
54
  });
52
55
  hasNormalizedToPositionLiftedOut = hasNormalizedToPositionLiftedOut || oldTo >= range.from && oldTo < range.to;
53
56
  hasNormalizedFromPositionLiftedOut = hasNormalizedFromPositionLiftedOut || oldFrom >= range.from && oldFrom < range.to;
@@ -202,7 +205,8 @@ const outdentRangeToParentList = ({
202
205
 
203
206
  const extractListItemsRangeFromList = ({
204
207
  tr,
205
- range
208
+ range,
209
+ state
206
210
  }) => {
207
211
  const list = range.parent;
208
212
  const $start = tr.doc.resolve(range.start);
@@ -228,7 +232,23 @@ const extractListItemsRangeFromList = ({
228
232
  }
229
233
  }
230
234
 
231
- const nextListFragment = listItemContent.append(Fragment.from(list.copy(Fragment.empty)));
235
+ let nextList = list.copy(Fragment.empty);
236
+ const featureFlags = getFeatureFlags(state);
237
+
238
+ if (featureFlags !== null && featureFlags !== void 0 && featureFlags.restartNumberedLists) {
239
+ // if splitting a numbered list, keep the splitted item
240
+ // counter as the start of the next (second half) list (instead
241
+ // of reverting back to 1 as a starting number)
242
+ const order = getOrderFromOrderedListNode(list);
243
+
244
+ if (list.type.name === 'orderedList') {
245
+ nextList.attrs = { ...nextList.attrs,
246
+ order: range.endIndex - 1 + order
247
+ };
248
+ }
249
+ }
250
+
251
+ const nextListFragment = listItemContent.append(Fragment.from(nextList));
232
252
 
233
253
  if (isTheEntireList) {
234
254
  const slice = new Slice(listItemContent, 0, 0);
@@ -25,7 +25,7 @@ export function outdentList(inputMethod = INPUT_METHOD.KEYBOARD) {
25
25
  closeHistory(state.tr);
26
26
  const actionSubjectId = isBulletList(parentListNode.node) ? ACTION_SUBJECT_ID.FORMAT_LIST_BULLET : ACTION_SUBJECT_ID.FORMAT_LIST_NUMBER;
27
27
  let customTr = state.tr;
28
- outdentListAction(customTr);
28
+ outdentListAction(customTr, state);
29
29
 
30
30
  if (!customTr || !customTr.docChanged) {
31
31
  // Even though this is a non-operation, we don't want to send this event to the browser. Because if we return false, the browser will move the focus to another place
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { orderedList, bulletList, listItem } from '@atlaskit/adf-schema';
2
+ import { orderedList, orderedListWithOrder, bulletList, listItem } from '@atlaskit/adf-schema';
3
3
  import { createPlugin } from './pm-plugins/main';
4
4
  import inputRulePlugin from './pm-plugins/input-rules';
5
5
  import keymapPlugin from './pm-plugins/keymap';
@@ -8,7 +8,11 @@ import { addAnalytics, ACTION, EVENT_TYPE, INPUT_METHOD, ACTION_SUBJECT, ACTION_
8
8
  import { tooltip, toggleBulletList, toggleOrderedList } from '../../keymaps';
9
9
  import { IconList, IconListNumber } from '../quick-insert/assets';
10
10
 
11
- const listPlugin = () => ({
11
+ /*
12
+ Toolbar buttons to bullet and ordered list can be found in
13
+ packages/editor/editor-core/src/plugins/toolbar-lists-indentation/ui/Toolbar.tsx
14
+ */
15
+ const listPlugin = options => ({
12
16
  name: 'list',
13
17
 
14
18
  nodes() {
@@ -17,7 +21,7 @@ const listPlugin = () => ({
17
21
  node: bulletList
18
22
  }, {
19
23
  name: 'orderedList',
20
- node: orderedList
24
+ node: options !== null && options !== void 0 && options.restartNumberedLists ? orderedListWithOrder : orderedList
21
25
  }, {
22
26
  name: 'listItem',
23
27
  node: listItem
@@ -2,7 +2,8 @@ import { ruleWithAnalytics, createWrappingJoinRule } from '../../../../utils/inp
2
2
  import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '../../../analytics';
3
3
  export function createRuleForListType({
4
4
  listType,
5
- expression
5
+ expression,
6
+ featureFlags
6
7
  }) {
7
8
  const isBulletList = listType.name === 'bulletList';
8
9
  const actionSubjectId = isBulletList ? ACTION_SUBJECT_ID.FORMAT_LIST_BULLET : ACTION_SUBJECT_ID.FORMAT_LIST_NUMBER;
@@ -18,10 +19,20 @@ export function createRuleForListType({
18
19
 
19
20
  const shouldJoinNextNodeWhen = (_, node) => node.type === listType;
20
21
 
22
+ let getAttrs = {};
23
+
24
+ if (featureFlags !== null && featureFlags !== void 0 && featureFlags.restartNumberedLists) {
25
+ getAttrs = matchResult => {
26
+ return {
27
+ order: Number(matchResult[1])
28
+ };
29
+ };
30
+ }
31
+
21
32
  const inputRule = createWrappingJoinRule({
22
33
  match: expression,
23
34
  nodeType: listType,
24
- getAttrs: {},
35
+ getAttrs,
25
36
  joinPredicate: shouldJoinNextNodeWhen
26
37
  });
27
38
  return ruleWithAnalytics(analyticsPayload)(inputRule);
@@ -19,10 +19,13 @@ export default function inputRulePlugin(schema, featureFlags) {
19
19
  }));
20
20
  }
21
21
 
22
+ const expression = featureFlags !== null && featureFlags !== void 0 && featureFlags.restartNumberedLists ? /((^[1-9]{1}[0-9]{0,2})|^(0))[\.\)] $/ : /^(1)[\.\)] $/;
23
+
22
24
  if (orderedList) {
23
25
  rules.push(createRuleForListType({
24
- expression: /^(1)[\.\)] $/,
25
- listType: orderedList
26
+ expression,
27
+ listType: orderedList,
28
+ featureFlags
26
29
  }));
27
30
  }
28
31
 
@@ -7,7 +7,9 @@ import { isListNode } from '../utils/node';
7
7
  import { pluginFactory } from '../../../utils/plugin-state-factory';
8
8
  import { setGapCursorSelection } from '../../../utils';
9
9
  import { Side } from '../../selection/gap-cursor-selection';
10
- import { listPaddingLeftMarkerSpace, CodeBlockSharedCssClassName } from '@atlaskit/editor-common/styles';
10
+ import { listItemCounterPadding, CodeBlockSharedCssClassName, getOrderedListInlineStyles } from '@atlaskit/editor-common/styles';
11
+ import { getItemCounterDigitsSize } from '@atlaskit/editor-common/utils';
12
+ import { getFeatureFlags } from '../../feature-flags-context';
11
13
  const listPluginKey = new PluginKey('listPlugin');
12
14
  export const pluginKey = listPluginKey;
13
15
  const initialState = {
@@ -17,8 +19,9 @@ const initialState = {
17
19
  orderedListDisabled: false,
18
20
  decorationSet: DecorationSet.empty
19
21
  };
20
- export const getDecorations = doc => {
21
- const decorations = []; // this stack keeps track of each (nested) list to calculate the indentation level
22
+ export const getDecorations = (doc, state) => {
23
+ const decorations = [];
24
+ const featureFlags = getFeatureFlags(state); // this stack keeps track of each (nested) list to calculate the indentation level
22
25
 
23
26
  const processedListsStack = [];
24
27
  doc.nodesBetween(0, doc.content.size, (node, currentNodeStartPos) => {
@@ -49,19 +52,36 @@ export const getDecorations = doc => {
49
52
  'data-indent-level': `${depth}`
50
53
  }));
51
54
 
52
- if (node.childCount >= 100) {
53
- decorations.push(Decoration.node(from, to, {
54
- 'data-child-count': '100+'
55
- }));
55
+ if (featureFlags !== null && featureFlags !== void 0 && featureFlags.restartNumberedLists) {
56
+ var _node$attrs;
57
+
58
+ // If a numbered list has item counters numbering >= 100, we'll need to add special
59
+ // spacing to account for the extra digit chars
60
+ const digitsSize = getItemCounterDigitsSize({
61
+ itemsCount: node === null || node === void 0 ? void 0 : node.childCount,
62
+ order: node === null || node === void 0 ? void 0 : (_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.order
63
+ });
64
+
65
+ if (digitsSize) {
66
+ decorations.push(Decoration.node(from, to, {
67
+ style: getOrderedListInlineStyles(digitsSize, 'string')
68
+ }));
69
+ }
70
+ } else {
71
+ if (node.childCount >= 100) {
72
+ decorations.push(Decoration.node(from, to, {
73
+ 'data-child-count': '100+'
74
+ }));
75
+ }
56
76
  }
57
77
  }
58
78
  });
59
79
  return DecorationSet.empty.add(doc, decorations);
60
80
  };
61
81
 
62
- const handleDocChanged = (tr, pluginState) => {
82
+ const handleDocChanged = (tr, pluginState, editorState) => {
63
83
  const nextPluginState = handleSelectionChanged(tr, pluginState);
64
- const decorationSet = getDecorations(tr.doc);
84
+ const decorationSet = getDecorations(tr.doc, editorState);
65
85
  return { ...nextPluginState,
66
86
  decorationSet
67
87
  };
@@ -105,7 +125,7 @@ const {
105
125
 
106
126
  const createInitialState = state => {
107
127
  return { ...initialState,
108
- decorationSet: getDecorations(state.doc)
128
+ decorationSet: getDecorations(state.doc, state)
109
129
  };
110
130
  };
111
131
 
@@ -138,7 +158,7 @@ export const createPlugin = eventDispatch => new SafePlugin({
138
158
  var _document, _document$elementFrom;
139
159
 
140
160
  const bufferPx = 50;
141
- const isCodeBlockNextToListMarker = Boolean((_document = document) === null || _document === void 0 ? void 0 : (_document$elementFrom = _document.elementFromPoint(event.clientX + (listPaddingLeftMarkerSpace + bufferPx), event.clientY)) === null || _document$elementFrom === void 0 ? void 0 : _document$elementFrom.closest(`.${CodeBlockSharedCssClassName.CODEBLOCK_CONTAINER}`));
161
+ const isCodeBlockNextToListMarker = Boolean((_document = document) === null || _document === void 0 ? void 0 : (_document$elementFrom = _document.elementFromPoint(event.clientX + (listItemCounterPadding + bufferPx), event.clientY)) === null || _document$elementFrom === void 0 ? void 0 : _document$elementFrom.closest(`.${CodeBlockSharedCssClassName.CODEBLOCK_CONTAINER}`));
142
162
 
143
163
  if (isCodeBlockNextToListMarker) {
144
164
  // +1 needed to put cursor inside li
@@ -1,4 +1,6 @@
1
1
  import React from 'react';
2
+ import { PluginKey, NodeSelection } from 'prosemirror-state';
3
+ import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
2
4
  import { media, mediaGroup, mediaSingle, mediaSingleWithCaption, mediaInline } from '@atlaskit/adf-schema';
3
5
  import { stateKey as pluginKey, createPlugin } from './pm-plugins/main';
4
6
  import { getMediaFeatureFlag } from '@atlaskit/media-common';
@@ -134,6 +136,42 @@ const mediaPlugin = options => ({
134
136
  });
135
137
  }
136
138
 
139
+ pmPlugins.push({
140
+ name: 'mediaSelectionHandler',
141
+ plugin: () => {
142
+ const mediaSelectionHandlerPlugin = new SafePlugin({
143
+ key: new PluginKey('mediaSelectionHandlerPlugin'),
144
+ props: {
145
+ handleScrollToSelection: view => {
146
+ const {
147
+ state: {
148
+ selection
149
+ }
150
+ } = view;
151
+
152
+ if (!(selection instanceof NodeSelection) || selection.node.type.name !== 'media') {
153
+ return false;
154
+ }
155
+
156
+ const {
157
+ node,
158
+ offset
159
+ } = view.domAtPos(selection.from);
160
+
161
+ if ( // Is the media element mounted already?
162
+ offset === node.childNodes.length) {
163
+ // Media is not ready, so stop the scroll request
164
+ return true;
165
+ } // Media is ready, keep the scrolling request
166
+
167
+
168
+ return false;
169
+ }
170
+ }
171
+ });
172
+ return mediaSelectionHandlerPlugin;
173
+ }
174
+ });
137
175
  return pmPlugins;
138
176
  },
139
177
 
@@ -64,10 +64,9 @@ class MediaGroup extends React.Component {
64
64
  const oldMediaNodes = this.mediaNodes;
65
65
  this.mediaNodes = [];
66
66
  node.forEach((item, childOffset) => {
67
- this.mediaPluginState.mediaGroupNodes[item.attrs.id] = {
68
- node: item,
69
- getPos: () => props.getPos() + childOffset + 1
70
- };
67
+ const getPos = () => props.getPos() + childOffset + 1;
68
+
69
+ this.mediaPluginState.setMediaGroupNode(item, getPos);
71
70
  this.mediaNodes.push(item);
72
71
  });
73
72
  this.mediaPluginState.handleMediaGroupUpdate(oldMediaNodes, this.mediaNodes);
@@ -186,7 +185,9 @@ class MediaGroup extends React.Component {
186
185
  const hasDifferentContextId = await mediaNodeUpdater.hasDifferentContextId();
187
186
 
188
187
  if (hasDifferentContextId) {
189
- await mediaNodeUpdater.copyNode();
188
+ await mediaNodeUpdater.copyNode({
189
+ traceId: node.attrs.__mediaTraceId
190
+ });
190
191
  }
191
192
  });
192
193
  }
@@ -44,7 +44,9 @@ export const updateMediaNodeAttributes = async props => {
44
44
 
45
45
  if (hasDifferentContextId) {
46
46
  try {
47
- const copyNode = mediaNodeUpdater.copyNode();
47
+ const copyNode = mediaNodeUpdater.copyNode({
48
+ traceId: node.attrs.__mediaTraceId
49
+ });
48
50
  addPendingTask(copyNode);
49
51
  await copyNode;
50
52
  } catch (e) {