@atlaskit/editor-core 151.3.0 → 151.3.1

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 (297) hide show
  1. package/dist/cjs/create-editor/ReactEditorView.js +22 -8
  2. package/dist/cjs/create-editor/create-plugins-list.js +25 -9
  3. package/dist/cjs/labs/next/presets/cxhtml.js +1 -2
  4. package/dist/cjs/nodeviews/ReactNodeView.js +2 -2
  5. package/dist/cjs/nodeviews/SelectionBasedNodeView.js +6 -0
  6. package/dist/cjs/plugins/analytics/types/enums.js +1 -0
  7. package/dist/cjs/plugins/annotation/utils.js +19 -8
  8. package/dist/cjs/plugins/avatar-group/index.js +2 -1
  9. package/dist/cjs/plugins/avatar-group/ui/AvatarGroupPluginWrapper.js +5 -2
  10. package/dist/cjs/plugins/before-primaryToolbar/index.js +26 -0
  11. package/dist/cjs/plugins/before-primaryToolbar/ui/BeforePrimaryToolbarWrapper.js +28 -0
  12. package/dist/cjs/plugins/extension/extension-api.js +10 -2
  13. package/dist/cjs/plugins/extension/ui/styles.js +1 -1
  14. package/dist/cjs/plugins/feature-flags-context/feature-flags-from-props.js +4 -2
  15. package/dist/cjs/plugins/find-replace/FindReplaceToolbarButtonWithState.js +172 -0
  16. package/dist/cjs/plugins/find-replace/index.js +14 -137
  17. package/dist/cjs/plugins/floating-toolbar/ui/EmojiPickerButton.js +10 -4
  18. package/dist/cjs/plugins/floating-toolbar/ui/Toolbar.js +1 -1
  19. package/dist/cjs/plugins/fragment/index.js +34 -0
  20. package/dist/cjs/plugins/fragment/plugin-key.js +11 -0
  21. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +1 -1
  22. package/dist/cjs/plugins/index.js +16 -0
  23. package/dist/cjs/plugins/list/actions/conversions.js +39 -71
  24. package/dist/cjs/plugins/list/transforms.js +7 -1
  25. package/dist/cjs/plugins/media/index.js +2 -3
  26. package/dist/cjs/plugins/media/nodeviews/mediaGroup.js +3 -1
  27. package/dist/cjs/plugins/media/nodeviews/mediaInline.js +12 -5
  28. package/dist/cjs/plugins/media/nodeviews/mediaNodeUpdater.js +3 -3
  29. package/dist/cjs/plugins/media/nodeviews/mediaSingle.js +6 -4
  30. package/dist/cjs/plugins/media/nodeviews/styles.js +6 -1
  31. package/dist/cjs/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +5 -1
  32. package/dist/cjs/plugins/media/pm-plugins/main.js +49 -15
  33. package/dist/cjs/plugins/media/toolbar/commands.js +59 -0
  34. package/dist/cjs/plugins/media/toolbar/filePreviewItem.js +7 -2
  35. package/dist/cjs/plugins/media/toolbar/index.js +90 -3
  36. package/dist/cjs/plugins/media/ui/ResizableMediaSingle/index.js +9 -1
  37. package/dist/cjs/plugins/media/utils/media-common.js +1 -1
  38. package/dist/cjs/plugins/media/utils/media-files.js +5 -1
  39. package/dist/cjs/plugins/panel/actions.js +2 -2
  40. package/dist/cjs/plugins/panel/index.js +3 -3
  41. package/dist/cjs/plugins/panel/nodeviews/panel.js +2 -2
  42. package/dist/cjs/plugins/panel/toolbar.js +10 -5
  43. package/dist/cjs/plugins/panel/utils.js +15 -0
  44. package/dist/cjs/plugins/rank.js +3 -2
  45. package/dist/cjs/plugins/selection/pm-plugins/selection-main.js +49 -1
  46. package/dist/cjs/plugins/status/ui/statusPicker.js +4 -2
  47. package/dist/cjs/plugins/table/commands/insert.js +1 -0
  48. package/dist/cjs/plugins/table/index.js +3 -2
  49. package/dist/cjs/plugins/table/nodeviews/OverflowShadowsObserver.js +1 -3
  50. package/dist/cjs/plugins/table/pm-plugins/main.js +26 -3
  51. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +2 -2
  52. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -0
  53. package/dist/cjs/plugins/table/transforms/column-width.js +14 -5
  54. package/dist/cjs/plugins/table/transforms/fix-tables.js +43 -6
  55. package/dist/cjs/plugins/table/ui/FloatingContextualButton/index.js +3 -2
  56. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +1 -0
  57. package/dist/cjs/plugins/table/ui/common-styles.css.js +1 -1
  58. package/dist/cjs/plugins/table/ui/consts.js +1 -1
  59. package/dist/cjs/plugins/table/ui/messages.js +1 -1
  60. package/dist/cjs/plugins/tasks-and-decisions/nodeviews/decisionItem.js +1 -1
  61. package/dist/cjs/plugins/tasks-and-decisions/nodeviews/taskItem.js +1 -1
  62. package/dist/cjs/plugins/tasks-and-decisions/pm-plugins/main.js +2 -2
  63. package/dist/cjs/plugins/text-color/ui/ToolbarTextColor/index.js +2 -1
  64. package/dist/cjs/plugins/text-formatting/index.js +2 -1
  65. package/dist/cjs/plugins/type-ahead/ui/TypeAheadList.js +1 -0
  66. package/dist/cjs/ui/Appearance/FullPage/FullPageToolbar.js +77 -26
  67. package/dist/cjs/ui/Appearance/FullPage/MainToolbar.js +32 -9
  68. package/dist/cjs/ui/ColorPalette/Color/index.js +8 -18
  69. package/dist/cjs/ui/ColorPalette/index.js +7 -4
  70. package/dist/cjs/ui/ColorPickerButton/index.js +1 -1
  71. package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +114 -61
  72. package/dist/cjs/ui/ConfigPanel/FormContent.js +39 -26
  73. package/dist/cjs/ui/ConfigPanel/transformers.js +490 -248
  74. package/dist/cjs/ui/ConfigPanel/utils.js +2 -10
  75. package/dist/cjs/ui/DropdownMenu/index.js +3 -1
  76. package/dist/cjs/ui/LinkSearch/LinkSearchListItem.js +1 -1
  77. package/dist/cjs/ui/Resizer/index.js +9 -1
  78. package/dist/cjs/version-wrapper.js +1 -1
  79. package/dist/cjs/version.json +1 -1
  80. package/dist/es2019/create-editor/ReactEditorView.js +19 -8
  81. package/dist/es2019/create-editor/create-plugins-list.js +26 -10
  82. package/dist/es2019/labs/next/presets/cxhtml.js +1 -2
  83. package/dist/es2019/nodeviews/ReactNodeView.js +1 -1
  84. package/dist/es2019/nodeviews/SelectionBasedNodeView.js +11 -0
  85. package/dist/es2019/plugins/analytics/types/enums.js +1 -0
  86. package/dist/es2019/plugins/annotation/utils.js +18 -7
  87. package/dist/es2019/plugins/avatar-group/index.js +2 -1
  88. package/dist/es2019/plugins/avatar-group/ui/AvatarGroupPluginWrapper.js +3 -2
  89. package/dist/es2019/plugins/before-primaryToolbar/index.js +15 -0
  90. package/dist/es2019/plugins/before-primaryToolbar/ui/BeforePrimaryToolbarWrapper.js +12 -0
  91. package/dist/es2019/plugins/extension/extension-api.js +9 -2
  92. package/dist/es2019/plugins/extension/ui/styles.js +6 -0
  93. package/dist/es2019/plugins/feature-flags-context/feature-flags-from-props.js +4 -2
  94. package/dist/es2019/plugins/find-replace/FindReplaceToolbarButtonWithState.js +152 -0
  95. package/dist/es2019/plugins/find-replace/index.js +15 -128
  96. package/dist/es2019/plugins/floating-toolbar/ui/DropdownMenu.js +2 -1
  97. package/dist/es2019/plugins/floating-toolbar/ui/EmojiPickerButton.js +10 -2
  98. package/dist/es2019/plugins/floating-toolbar/ui/Toolbar.js +1 -1
  99. package/dist/es2019/plugins/fragment/index.js +22 -0
  100. package/dist/es2019/plugins/fragment/plugin-key.js +2 -0
  101. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +2 -2
  102. package/dist/es2019/plugins/index.js +2 -0
  103. package/dist/es2019/plugins/list/actions/conversions.js +38 -69
  104. package/dist/es2019/plugins/list/transforms.js +5 -1
  105. package/dist/es2019/plugins/media/index.js +2 -2
  106. package/dist/es2019/plugins/media/nodeviews/mediaGroup.js +2 -1
  107. package/dist/es2019/plugins/media/nodeviews/mediaInline.js +8 -4
  108. package/dist/es2019/plugins/media/nodeviews/mediaNodeUpdater.js +3 -3
  109. package/dist/es2019/plugins/media/nodeviews/mediaSingle.js +7 -5
  110. package/dist/es2019/plugins/media/nodeviews/styles.js +2 -0
  111. package/dist/es2019/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +5 -1
  112. package/dist/es2019/plugins/media/pm-plugins/main.js +32 -17
  113. package/dist/es2019/plugins/media/toolbar/commands.js +47 -0
  114. package/dist/es2019/plugins/media/toolbar/filePreviewItem.js +6 -2
  115. package/dist/es2019/plugins/media/toolbar/index.js +90 -3
  116. package/dist/es2019/plugins/media/ui/ResizableMediaSingle/index.js +7 -1
  117. package/dist/es2019/plugins/media/utils/media-common.js +1 -1
  118. package/dist/es2019/plugins/media/utils/media-files.js +6 -1
  119. package/dist/es2019/plugins/panel/actions.js +2 -2
  120. package/dist/es2019/plugins/panel/index.js +5 -5
  121. package/dist/es2019/plugins/panel/nodeviews/panel.js +2 -2
  122. package/dist/es2019/plugins/panel/toolbar.js +10 -5
  123. package/dist/es2019/plugins/panel/utils.js +8 -1
  124. package/dist/es2019/plugins/rank.js +3 -2
  125. package/dist/es2019/plugins/selection/pm-plugins/selection-main.js +48 -1
  126. package/dist/es2019/plugins/status/ui/statusPicker.js +4 -2
  127. package/dist/es2019/plugins/table/commands/insert.js +1 -2
  128. package/dist/es2019/plugins/table/index.js +2 -1
  129. package/dist/es2019/plugins/table/nodeviews/OverflowShadowsObserver.js +1 -2
  130. package/dist/es2019/plugins/table/pm-plugins/main.js +25 -4
  131. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +2 -2
  132. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -0
  133. package/dist/es2019/plugins/table/transforms/column-width.js +13 -3
  134. package/dist/es2019/plugins/table/transforms/fix-tables.js +43 -5
  135. package/dist/es2019/plugins/table/ui/FloatingContextualButton/index.js +3 -2
  136. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +1 -0
  137. package/dist/es2019/plugins/table/ui/common-styles.css.js +5 -1
  138. package/dist/es2019/plugins/table/ui/consts.js +2 -2
  139. package/dist/es2019/plugins/table/ui/messages.js +1 -1
  140. package/dist/es2019/plugins/tasks-and-decisions/nodeviews/decisionItem.js +1 -1
  141. package/dist/es2019/plugins/tasks-and-decisions/nodeviews/taskItem.js +1 -1
  142. package/dist/es2019/plugins/tasks-and-decisions/pm-plugins/main.js +3 -3
  143. package/dist/es2019/plugins/text-color/ui/ToolbarTextColor/index.js +2 -1
  144. package/dist/es2019/plugins/text-formatting/index.js +3 -2
  145. package/dist/es2019/plugins/type-ahead/ui/TypeAheadList.js +2 -1
  146. package/dist/es2019/plugins/type-ahead/ui/TypeAheadListItem.js +2 -1
  147. package/dist/es2019/ui/Appearance/FullPage/FullPageToolbar.js +60 -27
  148. package/dist/es2019/ui/Appearance/FullPage/MainToolbar.js +51 -7
  149. package/dist/es2019/ui/ColorPalette/Color/index.js +9 -18
  150. package/dist/es2019/ui/ColorPalette/index.js +7 -4
  151. package/dist/es2019/ui/ColorPickerButton/index.js +1 -1
  152. package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +101 -49
  153. package/dist/es2019/ui/ConfigPanel/FormContent.js +35 -26
  154. package/dist/es2019/ui/ConfigPanel/transformers.js +243 -72
  155. package/dist/es2019/ui/ConfigPanel/utils.js +1 -2
  156. package/dist/es2019/ui/Dropdown/index.js +2 -1
  157. package/dist/es2019/ui/DropdownMenu/index.js +7 -3
  158. package/dist/es2019/ui/ElementBrowser/InsertMenu.js +1 -0
  159. package/dist/es2019/ui/ElementBrowser/components/ElementList/ElementList.js +1 -0
  160. package/dist/es2019/ui/LinkSearch/LinkSearchListItem.js +2 -2
  161. package/dist/es2019/ui/Resizer/index.js +9 -1
  162. package/dist/es2019/version-wrapper.js +1 -1
  163. package/dist/es2019/version.json +1 -1
  164. package/dist/esm/create-editor/ReactEditorView.js +22 -8
  165. package/dist/esm/create-editor/create-plugins-list.js +26 -10
  166. package/dist/esm/labs/next/presets/cxhtml.js +1 -2
  167. package/dist/esm/nodeviews/ReactNodeView.js +2 -2
  168. package/dist/esm/nodeviews/SelectionBasedNodeView.js +7 -0
  169. package/dist/esm/plugins/analytics/types/enums.js +1 -0
  170. package/dist/esm/plugins/annotation/utils.js +18 -7
  171. package/dist/esm/plugins/avatar-group/index.js +2 -1
  172. package/dist/esm/plugins/avatar-group/ui/AvatarGroupPluginWrapper.js +5 -2
  173. package/dist/esm/plugins/before-primaryToolbar/index.js +15 -0
  174. package/dist/esm/plugins/before-primaryToolbar/ui/BeforePrimaryToolbarWrapper.js +12 -0
  175. package/dist/esm/plugins/extension/extension-api.js +9 -2
  176. package/dist/esm/plugins/extension/ui/styles.js +1 -1
  177. package/dist/esm/plugins/feature-flags-context/feature-flags-from-props.js +4 -2
  178. package/dist/esm/plugins/find-replace/FindReplaceToolbarButtonWithState.js +155 -0
  179. package/dist/esm/plugins/find-replace/index.js +14 -131
  180. package/dist/esm/plugins/floating-toolbar/ui/DropdownMenu.js +2 -1
  181. package/dist/esm/plugins/floating-toolbar/ui/EmojiPickerButton.js +9 -4
  182. package/dist/esm/plugins/floating-toolbar/ui/Toolbar.js +1 -1
  183. package/dist/esm/plugins/fragment/index.js +22 -0
  184. package/dist/esm/plugins/fragment/plugin-key.js +2 -0
  185. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +2 -2
  186. package/dist/esm/plugins/index.js +2 -0
  187. package/dist/esm/plugins/list/actions/conversions.js +38 -71
  188. package/dist/esm/plugins/list/transforms.js +7 -1
  189. package/dist/esm/plugins/media/index.js +2 -3
  190. package/dist/esm/plugins/media/nodeviews/mediaGroup.js +2 -1
  191. package/dist/esm/plugins/media/nodeviews/mediaInline.js +11 -6
  192. package/dist/esm/plugins/media/nodeviews/mediaNodeUpdater.js +3 -3
  193. package/dist/esm/plugins/media/nodeviews/mediaSingle.js +7 -5
  194. package/dist/esm/plugins/media/nodeviews/styles.js +2 -0
  195. package/dist/esm/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +5 -1
  196. package/dist/esm/plugins/media/pm-plugins/main.js +47 -16
  197. package/dist/esm/plugins/media/toolbar/commands.js +45 -0
  198. package/dist/esm/plugins/media/toolbar/filePreviewItem.js +6 -2
  199. package/dist/esm/plugins/media/toolbar/index.js +88 -3
  200. package/dist/esm/plugins/media/ui/ResizableMediaSingle/index.js +9 -1
  201. package/dist/esm/plugins/media/utils/media-common.js +1 -1
  202. package/dist/esm/plugins/media/utils/media-files.js +6 -1
  203. package/dist/esm/plugins/panel/actions.js +2 -2
  204. package/dist/esm/plugins/panel/index.js +5 -5
  205. package/dist/esm/plugins/panel/nodeviews/panel.js +2 -2
  206. package/dist/esm/plugins/panel/toolbar.js +9 -4
  207. package/dist/esm/plugins/panel/utils.js +13 -0
  208. package/dist/esm/plugins/rank.js +3 -2
  209. package/dist/esm/plugins/selection/pm-plugins/selection-main.js +50 -1
  210. package/dist/esm/plugins/status/ui/statusPicker.js +4 -2
  211. package/dist/esm/plugins/table/commands/insert.js +1 -2
  212. package/dist/esm/plugins/table/index.js +3 -2
  213. package/dist/esm/plugins/table/nodeviews/OverflowShadowsObserver.js +1 -2
  214. package/dist/esm/plugins/table/pm-plugins/main.js +27 -4
  215. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +2 -2
  216. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -0
  217. package/dist/esm/plugins/table/transforms/column-width.js +13 -3
  218. package/dist/esm/plugins/table/transforms/fix-tables.js +42 -4
  219. package/dist/esm/plugins/table/ui/FloatingContextualButton/index.js +3 -2
  220. package/dist/esm/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +1 -0
  221. package/dist/esm/plugins/table/ui/common-styles.css.js +1 -1
  222. package/dist/esm/plugins/table/ui/consts.js +2 -2
  223. package/dist/esm/plugins/table/ui/messages.js +1 -1
  224. package/dist/esm/plugins/tasks-and-decisions/nodeviews/decisionItem.js +1 -1
  225. package/dist/esm/plugins/tasks-and-decisions/nodeviews/taskItem.js +1 -1
  226. package/dist/esm/plugins/tasks-and-decisions/pm-plugins/main.js +3 -3
  227. package/dist/esm/plugins/text-color/ui/ToolbarTextColor/index.js +2 -1
  228. package/dist/esm/plugins/text-formatting/index.js +3 -2
  229. package/dist/esm/plugins/type-ahead/ui/TypeAheadList.js +2 -1
  230. package/dist/esm/plugins/type-ahead/ui/TypeAheadListItem.js +2 -1
  231. package/dist/esm/ui/Appearance/FullPage/FullPageToolbar.js +67 -27
  232. package/dist/esm/ui/Appearance/FullPage/MainToolbar.js +20 -7
  233. package/dist/esm/ui/ColorPalette/Color/index.js +9 -16
  234. package/dist/esm/ui/ColorPalette/index.js +7 -4
  235. package/dist/esm/ui/ColorPickerButton/index.js +1 -1
  236. package/dist/esm/ui/ConfigPanel/ConfigPanel.js +113 -62
  237. package/dist/esm/ui/ConfigPanel/FormContent.js +39 -26
  238. package/dist/esm/ui/ConfigPanel/transformers.js +488 -248
  239. package/dist/esm/ui/ConfigPanel/utils.js +1 -6
  240. package/dist/esm/ui/Dropdown/index.js +2 -1
  241. package/dist/esm/ui/DropdownMenu/index.js +7 -3
  242. package/dist/esm/ui/ElementBrowser/InsertMenu.js +1 -0
  243. package/dist/esm/ui/ElementBrowser/components/ElementList/ElementList.js +1 -0
  244. package/dist/esm/ui/LinkSearch/LinkSearchListItem.js +2 -2
  245. package/dist/esm/ui/Resizer/index.js +9 -1
  246. package/dist/esm/version-wrapper.js +1 -1
  247. package/dist/esm/version.json +1 -1
  248. package/dist/types/labs/next/full-page.d.ts +1 -1
  249. package/dist/types/nodeviews/ReactNodeView.d.ts +1 -1
  250. package/dist/types/nodeviews/SelectionBasedNodeView.d.ts +1 -0
  251. package/dist/types/plugins/analytics/types/enums.d.ts +1 -0
  252. package/dist/types/plugins/analytics/types/events.d.ts +7 -1
  253. package/dist/types/plugins/annotation/utils.d.ts +1 -1
  254. package/dist/types/plugins/avatar-group/index.d.ts +1 -0
  255. package/dist/types/plugins/avatar-group/ui/AvatarGroupPluginWrapper.d.ts +1 -0
  256. package/dist/types/plugins/before-primaryToolbar/index.d.ts +5 -0
  257. package/dist/types/plugins/before-primaryToolbar/ui/BeforePrimaryToolbarWrapper.d.ts +5 -0
  258. package/dist/types/plugins/feature-flags-context/get-enabled-feature-flag-keys.d.ts +1 -1
  259. package/dist/types/plugins/find-replace/FindReplaceToolbarButtonWithState.d.ts +15 -0
  260. package/dist/types/plugins/find-replace/index.d.ts +1 -0
  261. package/dist/types/plugins/floating-toolbar/ui/EmojiPickerButton.d.ts +1 -1
  262. package/dist/types/plugins/fragment/index.d.ts +5 -0
  263. package/dist/types/plugins/fragment/plugin-key.d.ts +2 -0
  264. package/dist/types/plugins/index.d.ts +2 -0
  265. package/dist/types/plugins/media/nodeviews/mediaInline.d.ts +3 -2
  266. package/dist/types/plugins/media/nodeviews/mediaNodeUpdater.d.ts +2 -2
  267. package/dist/types/plugins/media/nodeviews/mediaSingle.d.ts +1 -1
  268. package/dist/types/plugins/media/nodeviews/styles.d.ts +2 -0
  269. package/dist/types/plugins/media/toolbar/commands.d.ts +3 -0
  270. package/dist/types/plugins/media/toolbar/filePreviewItem.d.ts +2 -0
  271. package/dist/types/plugins/media/types.d.ts +0 -1
  272. package/dist/types/plugins/panel/actions.d.ts +1 -1
  273. package/dist/types/plugins/panel/types.d.ts +8 -2
  274. package/dist/types/plugins/quick-insert/index.d.ts +2 -1
  275. package/dist/types/plugins/table/commands/insert.d.ts +3 -0
  276. package/dist/types/plugins/table/pm-plugins/main.d.ts +2 -1
  277. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/types.d.ts +1 -0
  278. package/dist/types/plugins/table/transforms/column-width.d.ts +4 -1
  279. package/dist/types/plugins/table/transforms/fix-tables.d.ts +3 -2
  280. package/dist/types/plugins/table/types.d.ts +8 -0
  281. package/dist/types/plugins/table/ui/consts.d.ts +1 -1
  282. package/dist/types/types/editor-appearance-component.d.ts +2 -2
  283. package/dist/types/types/editor-props.d.ts +11 -1
  284. package/dist/types/types/feature-flags.d.ts +13 -0
  285. package/dist/types/types/index.d.ts +1 -1
  286. package/dist/types/ui/Appearance/FullPage/FullPageToolbar.d.ts +2 -2
  287. package/dist/types/ui/Appearance/FullPage/MainToolbar.d.ts +10 -1
  288. package/dist/types/ui/ColorPalette/Color/index.d.ts +8 -5
  289. package/dist/types/ui/ColorPalette/index.d.ts +1 -0
  290. package/dist/types/ui/ConfigPanel/transformers.d.ts +7 -1
  291. package/dist/types/ui/ConfigPanel/utils.d.ts +0 -1
  292. package/dist/types/ui/Resizer/index.d.ts +1 -0
  293. package/package.json +10 -7
  294. package/dist/cjs/plugins/floating-toolbar/ui/EditorRemoveEmojiIcon.js +0 -38
  295. package/dist/es2019/plugins/floating-toolbar/ui/EditorRemoveEmojiIcon.js +0 -28
  296. package/dist/esm/plugins/floating-toolbar/ui/EditorRemoveEmojiIcon.js +0 -28
  297. package/dist/types/plugins/floating-toolbar/ui/EditorRemoveEmojiIcon.d.ts +0 -1
@@ -1,5 +1,4 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import { tableCellBorderWidth } from '@atlaskit/editor-common';
3
2
  import { ShadowEvent, TableCssClassName as ClassName } from '../types';
4
3
  import { tableInsertColumnButtonSize } from '../ui/consts';
5
4
  import { updateShadowListForStickyStyles } from './update-overflow-shadows';
@@ -54,7 +53,7 @@ export class OverflowShadowsObserver {
54
53
  }, {
55
54
  threshold: [0, 1],
56
55
  root: this.wrapper,
57
- rootMargin: `0px ${tableInsertColumnButtonSize / 2 - tableCellBorderWidth}px 0px 0px`
56
+ rootMargin: `0px ${tableInsertColumnButtonSize / 2}px 0px 0px`
58
57
  });
59
58
  return;
60
59
  }
@@ -10,7 +10,7 @@ import { pluginKey as decorationsPluginKey } from '../pm-plugins/decorations/plu
10
10
  import { fixTables, replaceSelectedTable } from '../transforms';
11
11
  import { TableCssClassName as ClassName } from '../types';
12
12
  import { findControlsHoverDecoration, updateResizeHandles } from '../utils';
13
- import { INPUT_METHOD } from '../../analytics';
13
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD } from '../../analytics';
14
14
  import { defaultTableSelection } from './default-table-selection';
15
15
  import { createPluginState, getPluginState, pluginKey } from './plugin-factory';
16
16
  import TableCellNodeView from '../nodeviews/tableCell';
@@ -18,7 +18,7 @@ let isBreakoutEnabled;
18
18
  let isDynamicTextSizingEnabled;
19
19
  let isFullWidthModeEnabled;
20
20
  let wasFullWidthModeEnabled;
21
- export const createPlugin = (dispatch, portalProviderAPI, eventDispatcher, pluginConfig, dynamicTextSizing, breakoutEnabled, fullWidthModeEnabled, previousFullWidthModeEnabled) => {
21
+ export const createPlugin = (dispatchAnalyticsEvent, dispatch, portalProviderAPI, eventDispatcher, pluginConfig, dynamicTextSizing, breakoutEnabled, fullWidthModeEnabled, previousFullWidthModeEnabled) => {
22
22
  var _window;
23
23
 
24
24
  isBreakoutEnabled = breakoutEnabled;
@@ -47,13 +47,34 @@ export const createPlugin = (dispatch, portalProviderAPI, eventDispatcher, plugi
47
47
  const tableCellNodeview = pluginConfig.tableCellOptimization ? {
48
48
  tableCell: (node, view, getPos) => new TableCellNodeView(node, view, getPos, observer),
49
49
  tableHeader: (node, view, getPos) => new TableCellNodeView(node, view, getPos, observer)
50
- } : {};
50
+ } : {}; // Used to prevent invalid table cell spans being reported more than once per editor/document
51
+
52
+ const invalidTableIds = [];
51
53
  return new Plugin({
52
54
  state: state,
53
55
  key: pluginKey,
54
56
  appendTransaction: (transactions, oldState, newState) => {
55
57
  const tr = transactions.find(tr => tr.getMeta('uiEvent') === 'cut');
56
58
 
59
+ function reportInvalidTableCellSpanAttrs(invalidNodeAttr) {
60
+ if (invalidTableIds.find(id => id === invalidNodeAttr.tableLocalId)) {
61
+ return;
62
+ }
63
+
64
+ invalidTableIds.push(invalidNodeAttr.tableLocalId);
65
+ dispatchAnalyticsEvent({
66
+ action: ACTION.INVALID_DOCUMENT_ENCOUNTERED,
67
+ actionSubject: ACTION_SUBJECT.EDITOR,
68
+ eventType: EVENT_TYPE.OPERATIONAL,
69
+ attributes: {
70
+ nodeType: invalidNodeAttr.nodeType,
71
+ reason: `${invalidNodeAttr.attribute}: ${invalidNodeAttr.reason}`,
72
+ tableLocalId: invalidNodeAttr.tableLocalId,
73
+ spanValue: invalidNodeAttr.spanValue
74
+ }
75
+ });
76
+ }
77
+
57
78
  if (tr) {
58
79
  // "fixTables" removes empty rows as we don't allow that in schema
59
80
  const updatedTr = handleCut(tr, oldState, newState);
@@ -61,7 +82,7 @@ export const createPlugin = (dispatch, portalProviderAPI, eventDispatcher, plugi
61
82
  }
62
83
 
63
84
  if (transactions.find(tr => tr.docChanged)) {
64
- return fixTables(newState.tr);
85
+ return fixTables(newState.tr, reportInvalidTableCellSpanAttrs);
65
86
  }
66
87
  },
67
88
  view: editorView => {
@@ -9,9 +9,9 @@ export const generateColgroup = table => {
9
9
  // We slice here to guard against our colwidth array having more entries
10
10
  // Than the we actually span. We'll patch the document at a later point.
11
11
  cell.attrs.colwidth.slice(0, colspan).forEach(width => {
12
- cols.push(['col', {
12
+ cols.push(['col', width ? {
13
13
  style: `width: ${width}px;`
14
- }]);
14
+ } : {}]);
15
15
  });
16
16
  } else {
17
17
  // When we have merged cells on the first row (firstChild),
@@ -25,6 +25,7 @@ export const getResizeState = ({
25
25
  cols,
26
26
  widths,
27
27
  maxSize,
28
+ tableWidth,
28
29
  overflow
29
30
  };
30
31
  } // Getting the resize state from DOM
@@ -42,6 +43,7 @@ export const getResizeState = ({
42
43
  cols,
43
44
  widths,
44
45
  maxSize,
46
+ tableWidth,
45
47
  overflow
46
48
  };
47
49
  }; // updates Colgroup DOM node with new widths
@@ -1,4 +1,5 @@
1
1
  import { TableMap } from '@atlaskit/editor-tables/table-map';
2
+ import { tableNewColumnMinWidth } from '@atlaskit/editor-common';
2
3
  import { hasTableBeenResized } from '../pm-plugins/table-resizing/utils';
3
4
  import { setMeta } from './metadata';
4
5
  import { getResizeState, normaliseTableLayout } from '../pm-plugins/table-resizing/utils/resize-state';
@@ -105,7 +106,10 @@ export const updateColumnWidths = (resizeState, table, start) => tr => {
105
106
  return tr.setSelection(selectionBookmark.resolve(tr.doc));
106
107
  };
107
108
  /**
108
- * This function is called when user inserts/deletes a column in a table to rescale all columns.
109
+ * This function is called when user inserts/deletes a column in a table to;
110
+ * - rescale all columns (if the table did not overflow before the insertion)
111
+ * - and update column widths.
112
+ *
109
113
  * This is done manually to avoid a multi-dispatch in TableComponent. See [ED-8288].
110
114
  * @param table
111
115
  * @param view
@@ -113,6 +117,8 @@ export const updateColumnWidths = (resizeState, table, start) => tr => {
113
117
  */
114
118
 
115
119
  export const rescaleColumns = (table, view) => tr => {
120
+ // If the table has been not been resized we skip updating the size
121
+ // of columns here.
116
122
  if (!view || !hasTableBeenResized(table.node)) {
117
123
  return tr;
118
124
  }
@@ -128,7 +134,8 @@ export const rescaleColumns = (table, view) => tr => {
128
134
  return tr;
129
135
  }
130
136
 
131
- const layout = normaliseTableLayout(tableRef === null || tableRef === void 0 ? void 0 : tableRef.dataset.layout);
137
+ const layout = normaliseTableLayout(tableRef === null || tableRef === void 0 ? void 0 : tableRef.dataset.layout); // The is the width the table can reach before overflowing
138
+
132
139
  const maxSize = getTableMaxWidth({
133
140
  table: table.node,
134
141
  tableStart: table.start,
@@ -144,8 +151,11 @@ export const rescaleColumns = (table, view) => tr => {
144
151
  domAtPos,
145
152
  maxSize
146
153
  });
154
+ const previousTableWidth = resizeState.tableWidth - tableNewColumnMinWidth;
155
+ const tableDidntPreviouslyOverflow = previousTableWidth <= maxSize; // If the new table width will result in the table going into an overflow state
156
+ // we resize the cells to avoid the overflow occuring
147
157
 
148
- if (resizeState.overflow) {
158
+ if (tableDidntPreviouslyOverflow && resizeState.overflow) {
149
159
  resizeState = scaleTableTo(resizeState, maxSize);
150
160
  }
151
161
 
@@ -11,7 +11,35 @@ export const fireAnalytics = (properties = {}) => sendLogs({
11
11
  server: 'local',
12
12
  user: '-'
13
13
  }]
14
- }); // We attempt to patch the document when we have extra, unneeded, column widths
14
+ });
15
+
16
+ const validateTableCellNodeAttrs = ({
17
+ colspan,
18
+ rowspan,
19
+ tableLocalId
20
+ }, reportInvalidTableCellSpanAttrs) => {
21
+ if (colspan && colspan < 0) {
22
+ reportInvalidTableCellSpanAttrs({
23
+ nodeType: 'tableCell',
24
+ attribute: 'colspan',
25
+ reason: 'negative value',
26
+ tableLocalId,
27
+ spanValue: colspan
28
+ });
29
+ }
30
+
31
+ if (rowspan && rowspan < 0) {
32
+ reportInvalidTableCellSpanAttrs({
33
+ nodeType: 'tableCell',
34
+ attribute: 'rowspan',
35
+ reason: 'negative value',
36
+ tableLocalId,
37
+ spanValue: rowspan
38
+ });
39
+ }
40
+
41
+ return;
42
+ }; // We attempt to patch the document when we have extra, unneeded, column widths
15
43
  // Take this node for example:
16
44
  //
17
45
  // ['td', { colwidth: [100, 100, 100], colspan: 2 }]
@@ -19,14 +47,24 @@ export const fireAnalytics = (properties = {}) => sendLogs({
19
47
  // This row only spans two columns, yet it contains widths for 3.
20
48
  // We remove the third width here, assumed duplicate content.
21
49
 
22
- export const removeExtraneousColumnWidths = (node, basePos, tr) => {
50
+
51
+ export const removeExtraneousColumnWidths = (node, basePos, tr, reportInvalidTableCellSpanAttrs) => {
23
52
  let hasProblems = false;
24
53
  tr = replaceCells(tr, node, basePos, cell => {
25
54
  const {
26
55
  colwidth,
27
- colspan
56
+ colspan,
57
+ rowspan
28
58
  } = cell.attrs;
29
59
 
60
+ if (reportInvalidTableCellSpanAttrs) {
61
+ validateTableCellNodeAttrs({
62
+ colspan,
63
+ rowspan,
64
+ tableLocalId: node.attrs.localId
65
+ }, reportInvalidTableCellSpanAttrs);
66
+ }
67
+
30
68
  if (colwidth && colwidth.length > colspan) {
31
69
  hasProblems = true;
32
70
  return cell.type.createChecked({ ...cell.attrs,
@@ -46,12 +84,12 @@ export const removeExtraneousColumnWidths = (node, basePos, tr) => {
46
84
 
47
85
  return false;
48
86
  };
49
- export const fixTables = tr => {
87
+ export const fixTables = (tr, reportInvalidTableCellSpanAttrs) => {
50
88
  let hasProblems = false;
51
89
  tr.doc.descendants((node, pos) => {
52
90
  if (node.type.name === 'table') {
53
91
  // in the unlikely event of having to fix multiple tables at the same time
54
- hasProblems = removeExtraneousColumnWidths(node, tr.mapping.map(pos), tr);
92
+ hasProblems = removeExtraneousColumnWidths(node, tr.mapping.map(pos), tr, reportInvalidTableCellSpanAttrs);
55
93
  }
56
94
  });
57
95
 
@@ -90,8 +90,9 @@ export class FloatingContextualButtonInner extends React.Component {
90
90
  title: labelCellOptions,
91
91
  onClick: this.handleClick,
92
92
  iconBefore: /*#__PURE__*/React.createElement(ExpandIcon, {
93
- label: labelCellOptions
94
- })
93
+ label: ""
94
+ }),
95
+ "aria-label": labelCellOptions
95
96
  }));
96
97
  const parentSticky = targetCellRef.parentElement && targetCellRef.parentElement.className.indexOf('sticky') > -1;
97
98
 
@@ -443,6 +443,7 @@ class ContextualMenu extends Component {
443
443
  }
444
444
 
445
445
  return /*#__PURE__*/React.createElement("div", {
446
+ "data-testid": "table-cell-contextual-menu",
446
447
  onMouseLeave: this.closeSubmenu
447
448
  }, /*#__PURE__*/React.createElement(DropdownMenu, {
448
449
  mountTo: mountPoint,
@@ -18,7 +18,11 @@ const sentinelStyles = `.${ClassName.TABLE_CONTAINER} {
18
18
  > .${ClassName.TABLE_STICKY_SENTINEL_TOP}, > .${ClassName.TABLE_STICKY_SENTINEL_BOTTOM} {
19
19
  position: absolute;
20
20
  width: 100%;
21
- height: 0px;
21
+ height: 1px;
22
+ margin-top: -1px;
23
+ // need this to avoid sentinel being focused via keyboard
24
+ // this still allows it to be detected by intersection observer
25
+ visibility: hidden;
22
26
  }
23
27
  > .${ClassName.TABLE_STICKY_SENTINEL_TOP} {
24
28
  top: ${columnControlsDecorationHeight}px;
@@ -1,4 +1,4 @@
1
- import { B100, B300, B75, N0, N20, R50, R300, R75, DN400, N200, DN30 } from '@atlaskit/theme/colors';
1
+ import { B100, B300, B75, N0, N20, R50, R400, R75, DN400, N200, DN30 } from '@atlaskit/theme/colors';
2
2
  import { tableCellBorderWidth, tableMarginTop } from '@atlaskit/editor-common';
3
3
  import { akEditorTableBorder, akEditorTableBorderDark, akEditorTableToolbar, akEditorTableToolbarDark, akEditorTableToolbarSize, akEditorUnitZIndex, akRichMediaResizeZIndex } from '@atlaskit/editor-shared-styles';
4
4
  import { RESIZE_HANDLE_AREA_DECORATION_GAP } from '../types';
@@ -28,7 +28,7 @@ export const tableCellSelectedColor = B75;
28
28
  export const tableToolbarSelectedColor = B100;
29
29
  export const tableBorderSelectedColor = B300;
30
30
  export const tableCellDeleteColor = R50;
31
- export const tableBorderDeleteColor = R300;
31
+ export const tableBorderDeleteColor = R400;
32
32
  export const tableToolbarDeleteColor = R75;
33
33
  export const tableBorderRadiusSize = 3;
34
34
  export const tablePadding = 8;
@@ -32,7 +32,7 @@ export default defineMessages({
32
32
  },
33
33
  confirmDeleteLinkedModalMessage: {
34
34
  id: 'fabric.editor.tables.confirmDeleteLinkedModalMessage',
35
- defaultMessage: 'Removing this table will also remove all of the data contained in any connected charts.',
35
+ defaultMessage: 'Removing this table will break all the charts connected to it.',
36
36
  description: 'Message for confirm modal when deleting a table linked to an extension.'
37
37
  }
38
38
  });
@@ -41,7 +41,7 @@ class Decision extends ReactNodeView {
41
41
  }
42
42
 
43
43
  update(node, decorations) {
44
- return super.update(node, decorations, // Toggle the placeholder based on whether user input exists.
44
+ return super.update(node, decorations, undefined, // Toggle the placeholder based on whether user input exists.
45
45
  (_currentNode, _newNode) => !this.isContentEmpty(_newNode));
46
46
  }
47
47
 
@@ -110,7 +110,7 @@ class Task extends ReactNodeView {
110
110
  }
111
111
 
112
112
  update(node, decorations) {
113
- return super.update(node, decorations, (currentNode, newNode) => // Toggle the placeholder based on whether user input exists
113
+ return super.update(node, decorations, undefined, (currentNode, newNode) => // Toggle the placeholder based on whether user input exists
114
114
  !this.isContentEmpty(newNode) && !!(currentNode.attrs.state === newNode.attrs.state));
115
115
  }
116
116
 
@@ -1,6 +1,6 @@
1
1
  import { NodeSelection, Plugin } from 'prosemirror-state';
2
2
  import { uuid } from '@atlaskit/adf-schema';
3
- import { nodesBetweenChanged } from '../../../utils';
3
+ import { nodesBetweenChanged, SetAttrsStep } from '../../../utils';
4
4
  import { createSelectionClickHandler } from '../../selection/utils';
5
5
  import { decisionItemNodeView } from '../nodeviews/decisionItem';
6
6
  import { taskItemNodeViewFactory } from '../nodeviews/taskItem';
@@ -145,10 +145,10 @@ export function createPlugin(portalProviderAPI, eventDispatcher, providerFactory
145
145
  } = node.attrs;
146
146
 
147
147
  if (localId === undefined || localId === null || localId === '') {
148
- tr.setNodeMarkup(pos, undefined, {
148
+ tr.step(new SetAttrsStep(pos, {
149
149
  localId: uuid.generate(),
150
150
  ...rest
151
- });
151
+ }));
152
152
  modified = true;
153
153
  }
154
154
  }
@@ -206,7 +206,8 @@ class ToolbarTextColor extends React.Component {
206
206
  }, /*#__PURE__*/React.createElement(ColorPalette, {
207
207
  palette: palette,
208
208
  onClick: color => this.changeTextColor(color, pluginState.disabled),
209
- selectedColor: pluginState.color
209
+ selectedColor: pluginState.color,
210
+ isShowingMoreColors: isShowingMoreColors
210
211
  })), showMoreColorsToggle && /*#__PURE__*/React.createElement(ShowMoreWrapper, null, /*#__PURE__*/React.createElement(Button, {
211
212
  appearance: "subtle",
212
213
  onClick: this.handleShowMoreToggle,
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { code, em, strike, strong, subsup, underline } from '@atlaskit/adf-schema';
3
3
  import WithPluginState from '../../ui/WithPluginState';
4
4
  import { plugin as textFormattingPlugin, pluginKey as textFormattingPluginKey } from './pm-plugins/main';
5
- import { plugin as clearFormattingPlugin } from './pm-plugins/clear-formatting';
5
+ import { plugin as clearFormattingPlugin, pluginKey as clearFormattingPluginKey } from './pm-plugins/clear-formatting';
6
6
  import clearFormattingKeymapPlugin from './pm-plugins/clear-formatting-keymap';
7
7
  import textFormattingCursorPlugin from './pm-plugins/cursor';
8
8
  import textFormattingInputRulePlugin from './pm-plugins/input-rule';
@@ -81,7 +81,8 @@ const textFormatting = (options = {}) => ({
81
81
  }) {
82
82
  return /*#__PURE__*/React.createElement(WithPluginState, {
83
83
  plugins: {
84
- textFormattingState: textFormattingPluginKey
84
+ textFormattingState: textFormattingPluginKey,
85
+ clearFormattingPluginState: clearFormattingPluginKey
85
86
  },
86
87
  render: () => {
87
88
  return /*#__PURE__*/React.createElement(Toolbar, {
@@ -1,5 +1,6 @@
1
1
  import React, { useMemo, useEffect, useRef, useCallback, useLayoutEffect } from 'react';
2
- import { text as colorsText, N200, N20, DN70, N800, DN600, DN300 } from '@atlaskit/theme/colors';
2
+ import { text as colorsText, N200, N20, DN70, N800, DN600, DN300 } from '@atlaskit/theme/colors'; // eslint-disable-next-line @atlaskit/design-system/no-deprecated-imports
3
+
3
4
  import { ItemGroup, itemThemeNamespace } from '@atlaskit/item';
4
5
  import { themed } from '@atlaskit/theme/components';
5
6
  import { ThemeProvider } from 'styled-components';
@@ -1,6 +1,7 @@
1
1
  import React, { useCallback, useMemo, useRef, useLayoutEffect } from 'react';
2
2
  import { N200 } from '@atlaskit/theme/colors';
3
- import { borderRadius } from '@atlaskit/theme/constants';
3
+ import { borderRadius } from '@atlaskit/theme/constants'; // eslint-disable-next-line @atlaskit/design-system/no-deprecated-imports
4
+
4
5
  import Item from '@atlaskit/item';
5
6
  import { relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles';
6
7
  import styled from 'styled-components';
@@ -1,39 +1,72 @@
1
- import React from 'react';
1
+ import React, { useState, useEffect } from 'react';
2
2
  import AvatarsWithPluginState from '../../../plugins/collab-edit/ui';
3
+ import FindReplaceToolbarButtonWithState from '../../../plugins/find-replace/FindReplaceToolbarButtonWithState';
4
+ import { BeforePrimaryToolbarWrapper } from '../../../plugins/before-primaryToolbar/ui/BeforePrimaryToolbarWrapper';
3
5
  import Toolbar from '../../Toolbar';
4
- import { MainToolbar, MainToolbarIconBefore, MainToolbarCustomComponentsSlot } from './MainToolbar';
6
+ import { MainToolbar, MainToolbarIconBefore, MainToolbarFirstChild, MainToolbarSecondChild, NonCustomToolbarWrapper, CustomToolbarWrapper, MAXIMUM_TWO_LINE_TOOLBAR_BREAKPOINT } from './MainToolbar';
5
7
  import { ContextPanelConsumer } from '../../ContextPanel/context';
6
8
  export const FullPageToolbar = /*#__PURE__*/React.memo(props => {
9
+ var _props$featureFlags, _props$featureFlags2, _props$featureFlags3, _props$collabEdit, _props$collabEdit2, _props$collabEdit3, _props$featureFlags4, _props$featureFlags5;
10
+
11
+ const [shouldSplitToolbar, setShouldSplitToolbar] = useState(false);
12
+ const nonCustomToolbar = /*#__PURE__*/React.createElement(NonCustomToolbarWrapper, null, props.beforeIcon && /*#__PURE__*/React.createElement(MainToolbarIconBefore, null, props.beforeIcon), /*#__PURE__*/React.createElement(Toolbar, {
13
+ editorView: props.editorView,
14
+ editorActions: props.editorActions,
15
+ eventDispatcher: props.eventDispatcher,
16
+ providerFactory: props.providerFactory,
17
+ appearance: props.appearance,
18
+ items: props.primaryToolbarComponents,
19
+ popupsMountPoint: props.popupsMountPoint,
20
+ popupsBoundariesElement: props.popupsBoundariesElement,
21
+ popupsScrollableElement: props.popupsScrollableElement,
22
+ disabled: props.disabled,
23
+ dispatchAnalyticsEvent: props.dispatchAnalyticsEvent,
24
+ containerElement: props.containerElement,
25
+ hasMinWidth: props.hasMinWidth
26
+ }));
27
+ const customToolbar = /*#__PURE__*/React.createElement(CustomToolbarWrapper, null, (_props$featureFlags = props.featureFlags) !== null && _props$featureFlags !== void 0 && _props$featureFlags.twoLineEditorToolbar && !!props.customPrimaryToolbarComponents && 'before' in props.customPrimaryToolbarComponents ? /*#__PURE__*/React.createElement(BeforePrimaryToolbarWrapper, {
28
+ beforePrimaryToolbarComponents: props.customPrimaryToolbarComponents.before
29
+ }) : null, (props === null || props === void 0 ? void 0 : (_props$featureFlags2 = props.featureFlags) === null || _props$featureFlags2 === void 0 ? void 0 : _props$featureFlags2.showAvatarGroupAsPlugin) === true && !((_props$featureFlags3 = props.featureFlags) !== null && _props$featureFlags3 !== void 0 && _props$featureFlags3.twoLineEditorToolbar) ? null : /*#__PURE__*/React.createElement(AvatarsWithPluginState, {
30
+ editorView: props.editorView,
31
+ eventDispatcher: props.eventDispatcher,
32
+ inviteToEditComponent: (_props$collabEdit = props.collabEdit) === null || _props$collabEdit === void 0 ? void 0 : _props$collabEdit.inviteToEditComponent,
33
+ inviteToEditHandler: (_props$collabEdit2 = props.collabEdit) === null || _props$collabEdit2 === void 0 ? void 0 : _props$collabEdit2.inviteToEditHandler,
34
+ isInviteToEditButtonSelected: (_props$collabEdit3 = props.collabEdit) === null || _props$collabEdit3 === void 0 ? void 0 : _props$collabEdit3.isInviteToEditButtonSelected
35
+ }), (_props$featureFlags4 = props.featureFlags) !== null && _props$featureFlags4 !== void 0 && _props$featureFlags4.findReplace && (_props$featureFlags5 = props.featureFlags) !== null && _props$featureFlags5 !== void 0 && _props$featureFlags5.twoLineEditorToolbar ? /*#__PURE__*/React.createElement(FindReplaceToolbarButtonWithState, {
36
+ popupsBoundariesElement: props.popupsBoundariesElement,
37
+ popupsMountPoint: props.popupsMountPoint,
38
+ popupsScrollableElement: props.popupsScrollableElement,
39
+ editorView: props.editorView,
40
+ containerElement: props.containerElement,
41
+ dispatchAnalyticsEvent: props.dispatchAnalyticsEvent
42
+ }) : null, !!props.customPrimaryToolbarComponents && 'after' in props.customPrimaryToolbarComponents ? props.customPrimaryToolbarComponents.after : props.customPrimaryToolbarComponents);
43
+ useEffect(() => {
44
+ var _props$featureFlags6;
45
+
46
+ if ((_props$featureFlags6 = props.featureFlags) !== null && _props$featureFlags6 !== void 0 && _props$featureFlags6.twoLineEditorToolbar) {
47
+ const updateOnResize = () => {
48
+ setShouldSplitToolbar(window.innerWidth <= MAXIMUM_TWO_LINE_TOOLBAR_BREAKPOINT);
49
+ };
50
+
51
+ window.addEventListener('resize', updateOnResize);
52
+ updateOnResize();
53
+ return () => window.removeEventListener('resize', updateOnResize);
54
+ }
55
+ });
7
56
  return /*#__PURE__*/React.createElement(ContextPanelConsumer, null, ({
8
57
  width: contextPanelWidth
9
58
  }) => {
10
- var _props$featureFlags;
59
+ var _props$featureFlags7, _props$featureFlags8, _props$featureFlags9;
11
60
 
12
61
  return /*#__PURE__*/React.createElement(MainToolbar, {
13
62
  "data-testid": "ak-editor-main-toolbar",
14
- showKeyline: props.showKeyline || contextPanelWidth > 0
15
- }, props.beforeIcon && /*#__PURE__*/React.createElement(MainToolbarIconBefore, null, props.beforeIcon), /*#__PURE__*/React.createElement(Toolbar, {
16
- editorView: props.editorView,
17
- editorActions: props.editorActions,
18
- eventDispatcher: props.eventDispatcher,
19
- providerFactory: props.providerFactory,
20
- appearance: props.appearance,
21
- items: props.primaryToolbarComponents,
22
- popupsMountPoint: props.popupsMountPoint,
23
- popupsBoundariesElement: props.popupsBoundariesElement,
24
- popupsScrollableElement: props.popupsScrollableElement,
25
- disabled: props.disabled,
26
- dispatchAnalyticsEvent: props.dispatchAnalyticsEvent,
27
- containerElement: props.containerElement,
28
- hasMinWidth: props.hasMinWidth
29
- }), /*#__PURE__*/React.createElement(MainToolbarCustomComponentsSlot, {
30
- "data-testid": 'avatar-group-outside-plugin'
31
- }, (props === null || props === void 0 ? void 0 : (_props$featureFlags = props.featureFlags) === null || _props$featureFlags === void 0 ? void 0 : _props$featureFlags.showAvatarGroupAsPlugin) === true ? null : /*#__PURE__*/React.createElement(AvatarsWithPluginState, {
32
- editorView: props.editorView,
33
- eventDispatcher: props.eventDispatcher,
34
- inviteToEditComponent: props.collabEdit && props.collabEdit.inviteToEditComponent,
35
- inviteToEditHandler: props.collabEdit && props.collabEdit.inviteToEditHandler,
36
- isInviteToEditButtonSelected: props.collabEdit && props.collabEdit.isInviteToEditButtonSelected
37
- }), props.customPrimaryToolbarComponents));
63
+ showKeyline: props.showKeyline || contextPanelWidth > 0,
64
+ twoLineEditorToolbar: !!((_props$featureFlags7 = props.featureFlags) !== null && _props$featureFlags7 !== void 0 && _props$featureFlags7.twoLineEditorToolbar)
65
+ }, /*#__PURE__*/React.createElement(MainToolbarFirstChild, {
66
+ twoLineEditorToolbar: !!((_props$featureFlags8 = props.featureFlags) !== null && _props$featureFlags8 !== void 0 && _props$featureFlags8.twoLineEditorToolbar)
67
+ }, shouldSplitToolbar ? customToolbar : nonCustomToolbar), /*#__PURE__*/React.createElement(MainToolbarSecondChild, {
68
+ "data-testid": 'avatar-group-outside-plugin',
69
+ twoLineEditorToolbar: !!((_props$featureFlags9 = props.featureFlags) !== null && _props$featureFlags9 !== void 0 && _props$featureFlags9.twoLineEditorToolbar)
70
+ }, shouldSplitToolbar ? nonCustomToolbar : customToolbar));
38
71
  });
39
72
  });
@@ -2,6 +2,7 @@ import styled from 'styled-components';
2
2
  import { N30 } from '@atlaskit/theme/colors';
3
3
  import { gridSize } from '@atlaskit/theme/constants';
4
4
  import { akEditorMenuZIndex, akEditorSwoopCubicBezier, akEditorToolbarKeylineHeight, akEditorMobileMaxWidth } from '@atlaskit/editor-shared-styles';
5
+ export const MAXIMUM_TWO_LINE_TOOLBAR_BREAKPOINT = 868;
5
6
  const toolbarLineHeight = 56;
6
7
  export const MainToolbar = styled.div`
7
8
  position: relative;
@@ -18,6 +19,13 @@ export const MainToolbar = styled.div`
18
19
  height: 0 !important;
19
20
  }
20
21
 
22
+ @media (max-width: ${MAXIMUM_TWO_LINE_TOOLBAR_BREAKPOINT}px) {
23
+ ${props => props.twoLineEditorToolbar && `
24
+ flex-wrap: wrap;
25
+ height: calc(${toolbarLineHeight}px * 2);
26
+ `}
27
+ }
28
+
21
29
  @media (max-width: ${akEditorMobileMaxWidth}px) {
22
30
  display: grid;
23
31
  height: calc(${toolbarLineHeight}px * 2);
@@ -34,21 +42,46 @@ export const MainToolbarIconBefore = styled.div`
34
42
  }
35
43
  `;
36
44
  MainToolbarIconBefore.displayName = 'MainToolbarIconBefore';
37
- export const MainToolbarCustomComponentsSlot = styled.div`
45
+ export const MainToolbarFirstChild = styled.div`
38
46
  display: flex;
39
- justify-content: flex-end;
40
47
  flex-grow: 1;
48
+
49
+ @media (max-width: ${MAXIMUM_TWO_LINE_TOOLBAR_BREAKPOINT}px) {
50
+ ${props => props.twoLineEditorToolbar && `
51
+ flex: 1 1 100%;
52
+ height: ${toolbarLineHeight}px;
53
+ justify-content: flex-end;
54
+ // ED-10241: We add fit-content to ensure that MainToolbar does not
55
+ // shrink more than the size of its contents. This will prevent the
56
+ // find/replace icon from being overlapped during a confluence
57
+ // publish operation
58
+ min-width: fit-content;
59
+ `}
60
+ }
61
+ @media (max-width: ${akEditorMobileMaxWidth}px) {
62
+ grid-column: 1;
63
+ grid-row: 1;
64
+ }
65
+ `;
66
+ MainToolbarFirstChild.displayName = 'MainToolbarFirstChild';
67
+ export const MainToolbarSecondChild = styled.div`
41
68
  // ED-10241: We add fit-content to ensure that MainToolbar does not
42
69
  // shrink more than the size of its contents. This will prevent the
43
70
  // find/replace icon from being overlapped during a confluence
44
71
  // publish operation
45
72
  min-width: fit-content;
46
- @media (max-width: ${akEditorMobileMaxWidth}px) {
47
- grid-column: 1;
48
- grid-row: 1;
73
+ @media (max-width: ${MAXIMUM_TWO_LINE_TOOLBAR_BREAKPOINT}px) {
74
+ ${props => props.twoLineEditorToolbar && `
75
+ display: flex;
76
+ flex-grow: 1;
77
+ flex: 1 1 100%;
78
+ margin: auto;
79
+ height: ${toolbarLineHeight}px;
80
+ min-width: 0;
81
+ `}
49
82
  }
50
83
  `;
51
- MainToolbarCustomComponentsSlot.displayName = 'MainToolbar';
84
+ MainToolbarSecondChild.displayName = 'MainToolbarSecondChild';
52
85
  export const SecondaryToolbar = styled.div`
53
86
  box-sizing: border-box;
54
87
  justify-content: flex-end;
@@ -57,4 +90,15 @@ export const SecondaryToolbar = styled.div`
57
90
  display: flex;
58
91
  padding: 24px 0;
59
92
  `;
60
- SecondaryToolbar.displayName = 'SecondaryToolbar';
93
+ SecondaryToolbar.displayName = 'SecondaryToolbar';
94
+ export const NonCustomToolbarWrapper = styled.div`
95
+ align-items: center;
96
+ display: flex;
97
+ flex-grow: 1;
98
+ `;
99
+ NonCustomToolbarWrapper.displayName = 'NonCustomToolbar';
100
+ export const CustomToolbarWrapper = styled.div`
101
+ align-items: center;
102
+ display: flex;
103
+ `;
104
+ CustomToolbarWrapper.displayName = 'CustomToolbar';
@@ -1,19 +1,10 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import React from 'react';
3
3
  import { PureComponent } from 'react';
4
- import { defineMessages, injectIntl } from 'react-intl';
5
4
  import EditorDoneIcon from '@atlaskit/icon/glyph/editor/done';
6
5
  import { N0 } from '@atlaskit/theme/colors';
7
6
  import { Button, ButtonWrapper } from './styles';
8
- import Tooltip from '@atlaskit/tooltip'; // IMO these should live inside @atlaskit/theme
9
-
10
- const messages = defineMessages({
11
- selected: {
12
- id: 'fabric.editor.selected',
13
- defaultMessage: 'Selected',
14
- description: 'If the item is selected or not.'
15
- }
16
- });
7
+ import Tooltip from '@atlaskit/tooltip';
17
8
 
18
9
  class Color extends PureComponent {
19
10
  constructor(...args) {
@@ -36,21 +27,20 @@ class Color extends PureComponent {
36
27
 
37
28
  render() {
38
29
  const {
30
+ autoFocus,
39
31
  tabIndex,
40
32
  value,
41
33
  label,
42
34
  isSelected,
43
35
  borderColor,
44
- checkMarkColor = N0,
45
- intl: {
46
- formatMessage
47
- }
36
+ checkMarkColor = N0
48
37
  } = this.props;
49
- const ariaLabelText = isSelected ? `${label} ${formatMessage(messages.selected)}` : label;
50
38
  return /*#__PURE__*/React.createElement(Tooltip, {
51
39
  content: label
52
40
  }, /*#__PURE__*/React.createElement(ButtonWrapper, null, /*#__PURE__*/React.createElement(Button, {
53
- "aria-label": ariaLabelText,
41
+ "aria-label": label,
42
+ role: "radio",
43
+ "aria-checked": isSelected,
54
44
  onClick: this.onClick,
55
45
  onMouseDown: this.onMouseDown,
56
46
  tabIndex: tabIndex,
@@ -58,7 +48,8 @@ class Color extends PureComponent {
58
48
  style: {
59
49
  backgroundColor: value || 'transparent',
60
50
  border: `1px solid ${borderColor}`
61
- }
51
+ },
52
+ autoFocus: autoFocus
62
53
  }, isSelected && /*#__PURE__*/React.createElement(EditorDoneIcon, {
63
54
  primaryColor: checkMarkColor,
64
55
  label: ""
@@ -67,4 +58,4 @@ class Color extends PureComponent {
67
58
 
68
59
  }
69
60
 
70
- export default injectIntl(Color);
61
+ export default Color;