@atlaskit/editor-core 151.1.2 → 152.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 (339) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/dist/cjs/create-editor/ReactEditorView.js +22 -8
  3. package/dist/cjs/create-editor/create-plugins-list.js +30 -11
  4. package/dist/cjs/labs/next/presets/cxhtml.js +1 -2
  5. package/dist/cjs/labs/next/presets/default.js +3 -1
  6. package/dist/cjs/nodeviews/ReactNodeView.js +2 -2
  7. package/dist/cjs/nodeviews/SelectionBasedNodeView.js +6 -0
  8. package/dist/cjs/plugins/analytics/types/enums.js +1 -0
  9. package/dist/cjs/plugins/annotation/utils.js +19 -8
  10. package/dist/cjs/plugins/avatar-group/index.js +2 -1
  11. package/dist/cjs/plugins/avatar-group/ui/AvatarGroupPluginWrapper.js +5 -2
  12. package/dist/cjs/plugins/before-primaryToolbar/index.js +26 -0
  13. package/dist/cjs/plugins/before-primaryToolbar/ui/BeforePrimaryToolbarWrapper.js +28 -0
  14. package/dist/cjs/plugins/code-bidi-warning/index.js +5 -2
  15. package/dist/cjs/plugins/code-bidi-warning/pm-plugins/main.js +12 -3
  16. package/dist/cjs/plugins/code-bidi-warning/pm-plugins/plugin-factory.js +15 -5
  17. package/dist/cjs/plugins/code-block/index.js +3 -3
  18. package/dist/cjs/plugins/code-block/nodeviews/highlighting-code-block.js +6 -3
  19. package/dist/cjs/plugins/code-block/pm-plugins/main.js +11 -3
  20. package/dist/cjs/plugins/extension/extension-api.js +10 -2
  21. package/dist/cjs/plugins/extension/ui/styles.js +1 -1
  22. package/dist/cjs/plugins/feature-flags-context/feature-flags-from-props.js +4 -2
  23. package/dist/cjs/plugins/find-replace/FindReplaceToolbarButtonWithState.js +172 -0
  24. package/dist/cjs/plugins/find-replace/index.js +14 -137
  25. package/dist/cjs/plugins/find-replace/ui/Find.js +16 -9
  26. package/dist/cjs/plugins/find-replace/ui/FindReplace.js +9 -2
  27. package/dist/cjs/plugins/find-replace/ui/Replace.js +11 -3
  28. package/dist/cjs/plugins/find-replace/ui/styles.js +44 -35
  29. package/dist/cjs/plugins/floating-toolbar/ui/EmojiPickerButton.js +10 -4
  30. package/dist/cjs/plugins/floating-toolbar/ui/Toolbar.js +1 -1
  31. package/dist/cjs/plugins/fragment/index.js +34 -0
  32. package/dist/cjs/plugins/fragment/plugin-key.js +11 -0
  33. package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +1 -1
  34. package/dist/cjs/plugins/index.js +16 -0
  35. package/dist/cjs/plugins/list/actions/conversions.js +39 -71
  36. package/dist/cjs/plugins/list/transforms.js +7 -1
  37. package/dist/cjs/plugins/media/index.js +2 -3
  38. package/dist/cjs/plugins/media/nodeviews/mediaGroup.js +3 -1
  39. package/dist/cjs/plugins/media/nodeviews/mediaInline.js +12 -5
  40. package/dist/cjs/plugins/media/nodeviews/mediaSingle.js +6 -4
  41. package/dist/cjs/plugins/media/nodeviews/styles.js +6 -1
  42. package/dist/cjs/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +5 -1
  43. package/dist/cjs/plugins/media/pm-plugins/main.js +49 -15
  44. package/dist/cjs/plugins/media/toolbar/commands.js +59 -0
  45. package/dist/cjs/plugins/media/toolbar/filePreviewItem.js +7 -2
  46. package/dist/cjs/plugins/media/toolbar/index.js +90 -3
  47. package/dist/cjs/plugins/media/ui/ResizableMediaSingle/index.js +9 -1
  48. package/dist/cjs/plugins/media/utils/media-common.js +1 -1
  49. package/dist/cjs/plugins/media/utils/media-files.js +5 -1
  50. package/dist/cjs/plugins/panel/actions.js +2 -2
  51. package/dist/cjs/plugins/panel/index.js +3 -3
  52. package/dist/cjs/plugins/panel/nodeviews/panel.js +2 -2
  53. package/dist/cjs/plugins/panel/toolbar.js +10 -5
  54. package/dist/cjs/plugins/panel/utils.js +15 -0
  55. package/dist/cjs/plugins/rank.js +3 -2
  56. package/dist/cjs/plugins/selection/pm-plugins/selection-main.js +49 -1
  57. package/dist/cjs/plugins/status/ui/statusPicker.js +4 -2
  58. package/dist/cjs/plugins/table/commands/insert.js +1 -0
  59. package/dist/cjs/plugins/table/index.js +3 -2
  60. package/dist/cjs/plugins/table/nodeviews/OverflowShadowsObserver.js +1 -3
  61. package/dist/cjs/plugins/table/pm-plugins/main.js +26 -3
  62. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +2 -2
  63. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -0
  64. package/dist/cjs/plugins/table/transforms/column-width.js +14 -5
  65. package/dist/cjs/plugins/table/transforms/fix-tables.js +43 -6
  66. package/dist/cjs/plugins/table/ui/FloatingContextualButton/index.js +3 -2
  67. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +1 -0
  68. package/dist/cjs/plugins/table/ui/common-styles.css.js +1 -1
  69. package/dist/cjs/plugins/table/ui/consts.js +1 -1
  70. package/dist/cjs/plugins/table/ui/messages.js +1 -1
  71. package/dist/cjs/plugins/tasks-and-decisions/nodeviews/decisionItem.js +1 -1
  72. package/dist/cjs/plugins/tasks-and-decisions/nodeviews/taskItem.js +1 -1
  73. package/dist/cjs/plugins/tasks-and-decisions/pm-plugins/main.js +2 -2
  74. package/dist/cjs/plugins/text-color/ui/ToolbarTextColor/index.js +2 -1
  75. package/dist/cjs/plugins/text-formatting/index.js +2 -1
  76. package/dist/cjs/plugins/type-ahead/ui/TypeAheadList.js +1 -0
  77. package/dist/cjs/ui/Appearance/FullPage/FullPageToolbar.js +77 -26
  78. package/dist/cjs/ui/Appearance/FullPage/MainToolbar.js +32 -9
  79. package/dist/cjs/ui/ColorPalette/Color/index.js +8 -18
  80. package/dist/cjs/ui/ColorPalette/index.js +7 -4
  81. package/dist/cjs/ui/ColorPickerButton/index.js +1 -1
  82. package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +114 -61
  83. package/dist/cjs/ui/ConfigPanel/FormContent.js +39 -26
  84. package/dist/cjs/ui/ConfigPanel/transformers.js +490 -248
  85. package/dist/cjs/ui/ConfigPanel/utils.js +2 -10
  86. package/dist/cjs/ui/DropdownMenu/index.js +3 -1
  87. package/dist/cjs/ui/LinkSearch/LinkSearchListItem.js +1 -1
  88. package/dist/cjs/ui/Resizer/index.js +9 -1
  89. package/dist/cjs/version-wrapper.js +1 -1
  90. package/dist/cjs/version.json +1 -1
  91. package/dist/es2019/create-editor/ReactEditorView.js +19 -8
  92. package/dist/es2019/create-editor/create-plugins-list.js +31 -12
  93. package/dist/es2019/labs/next/presets/cxhtml.js +1 -2
  94. package/dist/es2019/labs/next/presets/default.js +3 -1
  95. package/dist/es2019/nodeviews/ReactNodeView.js +1 -1
  96. package/dist/es2019/nodeviews/SelectionBasedNodeView.js +11 -0
  97. package/dist/es2019/plugins/analytics/types/enums.js +1 -0
  98. package/dist/es2019/plugins/annotation/utils.js +18 -7
  99. package/dist/es2019/plugins/avatar-group/index.js +2 -1
  100. package/dist/es2019/plugins/avatar-group/ui/AvatarGroupPluginWrapper.js +3 -2
  101. package/dist/es2019/plugins/before-primaryToolbar/index.js +15 -0
  102. package/dist/es2019/plugins/before-primaryToolbar/ui/BeforePrimaryToolbarWrapper.js +12 -0
  103. package/dist/es2019/plugins/code-bidi-warning/index.js +8 -2
  104. package/dist/es2019/plugins/code-bidi-warning/pm-plugins/main.js +12 -2
  105. package/dist/es2019/plugins/code-bidi-warning/pm-plugins/plugin-factory.js +16 -5
  106. package/dist/es2019/plugins/code-block/index.js +3 -2
  107. package/dist/es2019/plugins/code-block/nodeviews/highlighting-code-block.js +6 -3
  108. package/dist/es2019/plugins/code-block/pm-plugins/main.js +11 -3
  109. package/dist/es2019/plugins/extension/extension-api.js +9 -2
  110. package/dist/es2019/plugins/extension/ui/styles.js +6 -0
  111. package/dist/es2019/plugins/feature-flags-context/feature-flags-from-props.js +4 -2
  112. package/dist/es2019/plugins/find-replace/FindReplaceToolbarButtonWithState.js +152 -0
  113. package/dist/es2019/plugins/find-replace/index.js +15 -128
  114. package/dist/es2019/plugins/find-replace/ui/Find.js +18 -10
  115. package/dist/es2019/plugins/find-replace/ui/FindReplace.js +11 -3
  116. package/dist/es2019/plugins/find-replace/ui/Replace.js +12 -4
  117. package/dist/es2019/plugins/find-replace/ui/styles.js +37 -47
  118. package/dist/es2019/plugins/floating-toolbar/ui/DropdownMenu.js +2 -1
  119. package/dist/es2019/plugins/floating-toolbar/ui/EmojiPickerButton.js +10 -2
  120. package/dist/es2019/plugins/floating-toolbar/ui/Toolbar.js +1 -1
  121. package/dist/es2019/plugins/fragment/index.js +22 -0
  122. package/dist/es2019/plugins/fragment/plugin-key.js +2 -0
  123. package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +2 -2
  124. package/dist/es2019/plugins/index.js +2 -0
  125. package/dist/es2019/plugins/list/actions/conversions.js +38 -69
  126. package/dist/es2019/plugins/list/transforms.js +5 -1
  127. package/dist/es2019/plugins/media/index.js +2 -2
  128. package/dist/es2019/plugins/media/nodeviews/mediaGroup.js +2 -1
  129. package/dist/es2019/plugins/media/nodeviews/mediaInline.js +8 -4
  130. package/dist/es2019/plugins/media/nodeviews/mediaSingle.js +7 -5
  131. package/dist/es2019/plugins/media/nodeviews/styles.js +2 -0
  132. package/dist/es2019/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +5 -1
  133. package/dist/es2019/plugins/media/pm-plugins/main.js +32 -17
  134. package/dist/es2019/plugins/media/toolbar/commands.js +47 -0
  135. package/dist/es2019/plugins/media/toolbar/filePreviewItem.js +6 -2
  136. package/dist/es2019/plugins/media/toolbar/index.js +90 -3
  137. package/dist/es2019/plugins/media/ui/ResizableMediaSingle/index.js +7 -1
  138. package/dist/es2019/plugins/media/utils/media-common.js +1 -1
  139. package/dist/es2019/plugins/media/utils/media-files.js +6 -1
  140. package/dist/es2019/plugins/panel/actions.js +2 -2
  141. package/dist/es2019/plugins/panel/index.js +5 -5
  142. package/dist/es2019/plugins/panel/nodeviews/panel.js +2 -2
  143. package/dist/es2019/plugins/panel/toolbar.js +10 -5
  144. package/dist/es2019/plugins/panel/utils.js +8 -1
  145. package/dist/es2019/plugins/rank.js +3 -2
  146. package/dist/es2019/plugins/selection/pm-plugins/selection-main.js +48 -1
  147. package/dist/es2019/plugins/status/ui/statusPicker.js +4 -2
  148. package/dist/es2019/plugins/table/commands/insert.js +1 -2
  149. package/dist/es2019/plugins/table/index.js +2 -1
  150. package/dist/es2019/plugins/table/nodeviews/OverflowShadowsObserver.js +1 -2
  151. package/dist/es2019/plugins/table/pm-plugins/main.js +25 -4
  152. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +2 -2
  153. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -0
  154. package/dist/es2019/plugins/table/transforms/column-width.js +13 -3
  155. package/dist/es2019/plugins/table/transforms/fix-tables.js +43 -5
  156. package/dist/es2019/plugins/table/ui/FloatingContextualButton/index.js +3 -2
  157. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +1 -0
  158. package/dist/es2019/plugins/table/ui/common-styles.css.js +5 -1
  159. package/dist/es2019/plugins/table/ui/consts.js +2 -2
  160. package/dist/es2019/plugins/table/ui/messages.js +1 -1
  161. package/dist/es2019/plugins/tasks-and-decisions/nodeviews/decisionItem.js +1 -1
  162. package/dist/es2019/plugins/tasks-and-decisions/nodeviews/taskItem.js +1 -1
  163. package/dist/es2019/plugins/tasks-and-decisions/pm-plugins/main.js +3 -3
  164. package/dist/es2019/plugins/text-color/ui/ToolbarTextColor/index.js +2 -1
  165. package/dist/es2019/plugins/text-formatting/index.js +3 -2
  166. package/dist/es2019/plugins/type-ahead/ui/TypeAheadList.js +2 -1
  167. package/dist/es2019/plugins/type-ahead/ui/TypeAheadListItem.js +2 -1
  168. package/dist/es2019/ui/Appearance/FullPage/FullPageToolbar.js +60 -27
  169. package/dist/es2019/ui/Appearance/FullPage/MainToolbar.js +51 -7
  170. package/dist/es2019/ui/ColorPalette/Color/index.js +9 -18
  171. package/dist/es2019/ui/ColorPalette/index.js +7 -4
  172. package/dist/es2019/ui/ColorPickerButton/index.js +1 -1
  173. package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +101 -49
  174. package/dist/es2019/ui/ConfigPanel/FormContent.js +35 -26
  175. package/dist/es2019/ui/ConfigPanel/transformers.js +243 -72
  176. package/dist/es2019/ui/ConfigPanel/utils.js +1 -2
  177. package/dist/es2019/ui/Dropdown/index.js +2 -1
  178. package/dist/es2019/ui/DropdownMenu/index.js +7 -3
  179. package/dist/es2019/ui/ElementBrowser/InsertMenu.js +1 -0
  180. package/dist/es2019/ui/ElementBrowser/components/ElementList/ElementList.js +1 -0
  181. package/dist/es2019/ui/LinkSearch/LinkSearchListItem.js +2 -2
  182. package/dist/es2019/ui/Resizer/index.js +9 -1
  183. package/dist/es2019/version-wrapper.js +1 -1
  184. package/dist/es2019/version.json +1 -1
  185. package/dist/esm/create-editor/ReactEditorView.js +22 -8
  186. package/dist/esm/create-editor/create-plugins-list.js +31 -12
  187. package/dist/esm/labs/next/presets/cxhtml.js +1 -2
  188. package/dist/esm/labs/next/presets/default.js +3 -1
  189. package/dist/esm/nodeviews/ReactNodeView.js +2 -2
  190. package/dist/esm/nodeviews/SelectionBasedNodeView.js +7 -0
  191. package/dist/esm/plugins/analytics/types/enums.js +1 -0
  192. package/dist/esm/plugins/annotation/utils.js +18 -7
  193. package/dist/esm/plugins/avatar-group/index.js +2 -1
  194. package/dist/esm/plugins/avatar-group/ui/AvatarGroupPluginWrapper.js +5 -2
  195. package/dist/esm/plugins/before-primaryToolbar/index.js +15 -0
  196. package/dist/esm/plugins/before-primaryToolbar/ui/BeforePrimaryToolbarWrapper.js +12 -0
  197. package/dist/esm/plugins/code-bidi-warning/index.js +5 -2
  198. package/dist/esm/plugins/code-bidi-warning/pm-plugins/main.js +12 -3
  199. package/dist/esm/plugins/code-bidi-warning/pm-plugins/plugin-factory.js +15 -5
  200. package/dist/esm/plugins/code-block/index.js +3 -3
  201. package/dist/esm/plugins/code-block/nodeviews/highlighting-code-block.js +6 -3
  202. package/dist/esm/plugins/code-block/pm-plugins/main.js +11 -3
  203. package/dist/esm/plugins/extension/extension-api.js +9 -2
  204. package/dist/esm/plugins/extension/ui/styles.js +1 -1
  205. package/dist/esm/plugins/feature-flags-context/feature-flags-from-props.js +4 -2
  206. package/dist/esm/plugins/find-replace/FindReplaceToolbarButtonWithState.js +155 -0
  207. package/dist/esm/plugins/find-replace/index.js +14 -131
  208. package/dist/esm/plugins/find-replace/ui/Find.js +17 -10
  209. package/dist/esm/plugins/find-replace/ui/FindReplace.js +10 -3
  210. package/dist/esm/plugins/find-replace/ui/Replace.js +11 -4
  211. package/dist/esm/plugins/find-replace/ui/styles.js +39 -18
  212. package/dist/esm/plugins/floating-toolbar/ui/DropdownMenu.js +2 -1
  213. package/dist/esm/plugins/floating-toolbar/ui/EmojiPickerButton.js +9 -4
  214. package/dist/esm/plugins/floating-toolbar/ui/Toolbar.js +1 -1
  215. package/dist/esm/plugins/fragment/index.js +22 -0
  216. package/dist/esm/plugins/fragment/plugin-key.js +2 -0
  217. package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +2 -2
  218. package/dist/esm/plugins/index.js +2 -0
  219. package/dist/esm/plugins/list/actions/conversions.js +38 -71
  220. package/dist/esm/plugins/list/transforms.js +7 -1
  221. package/dist/esm/plugins/media/index.js +2 -3
  222. package/dist/esm/plugins/media/nodeviews/mediaGroup.js +2 -1
  223. package/dist/esm/plugins/media/nodeviews/mediaInline.js +11 -6
  224. package/dist/esm/plugins/media/nodeviews/mediaSingle.js +7 -5
  225. package/dist/esm/plugins/media/nodeviews/styles.js +2 -0
  226. package/dist/esm/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +5 -1
  227. package/dist/esm/plugins/media/pm-plugins/main.js +47 -16
  228. package/dist/esm/plugins/media/toolbar/commands.js +45 -0
  229. package/dist/esm/plugins/media/toolbar/filePreviewItem.js +6 -2
  230. package/dist/esm/plugins/media/toolbar/index.js +88 -3
  231. package/dist/esm/plugins/media/ui/ResizableMediaSingle/index.js +9 -1
  232. package/dist/esm/plugins/media/utils/media-common.js +1 -1
  233. package/dist/esm/plugins/media/utils/media-files.js +6 -1
  234. package/dist/esm/plugins/panel/actions.js +2 -2
  235. package/dist/esm/plugins/panel/index.js +5 -5
  236. package/dist/esm/plugins/panel/nodeviews/panel.js +2 -2
  237. package/dist/esm/plugins/panel/toolbar.js +9 -4
  238. package/dist/esm/plugins/panel/utils.js +13 -0
  239. package/dist/esm/plugins/rank.js +3 -2
  240. package/dist/esm/plugins/selection/pm-plugins/selection-main.js +50 -1
  241. package/dist/esm/plugins/status/ui/statusPicker.js +4 -2
  242. package/dist/esm/plugins/table/commands/insert.js +1 -2
  243. package/dist/esm/plugins/table/index.js +3 -2
  244. package/dist/esm/plugins/table/nodeviews/OverflowShadowsObserver.js +1 -2
  245. package/dist/esm/plugins/table/pm-plugins/main.js +27 -4
  246. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +2 -2
  247. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -0
  248. package/dist/esm/plugins/table/transforms/column-width.js +13 -3
  249. package/dist/esm/plugins/table/transforms/fix-tables.js +42 -4
  250. package/dist/esm/plugins/table/ui/FloatingContextualButton/index.js +3 -2
  251. package/dist/esm/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +1 -0
  252. package/dist/esm/plugins/table/ui/common-styles.css.js +1 -1
  253. package/dist/esm/plugins/table/ui/consts.js +2 -2
  254. package/dist/esm/plugins/table/ui/messages.js +1 -1
  255. package/dist/esm/plugins/tasks-and-decisions/nodeviews/decisionItem.js +1 -1
  256. package/dist/esm/plugins/tasks-and-decisions/nodeviews/taskItem.js +1 -1
  257. package/dist/esm/plugins/tasks-and-decisions/pm-plugins/main.js +3 -3
  258. package/dist/esm/plugins/text-color/ui/ToolbarTextColor/index.js +2 -1
  259. package/dist/esm/plugins/text-formatting/index.js +3 -2
  260. package/dist/esm/plugins/type-ahead/ui/TypeAheadList.js +2 -1
  261. package/dist/esm/plugins/type-ahead/ui/TypeAheadListItem.js +2 -1
  262. package/dist/esm/ui/Appearance/FullPage/FullPageToolbar.js +67 -27
  263. package/dist/esm/ui/Appearance/FullPage/MainToolbar.js +20 -7
  264. package/dist/esm/ui/ColorPalette/Color/index.js +9 -16
  265. package/dist/esm/ui/ColorPalette/index.js +7 -4
  266. package/dist/esm/ui/ColorPickerButton/index.js +1 -1
  267. package/dist/esm/ui/ConfigPanel/ConfigPanel.js +113 -62
  268. package/dist/esm/ui/ConfigPanel/FormContent.js +39 -26
  269. package/dist/esm/ui/ConfigPanel/transformers.js +488 -248
  270. package/dist/esm/ui/ConfigPanel/utils.js +1 -6
  271. package/dist/esm/ui/Dropdown/index.js +2 -1
  272. package/dist/esm/ui/DropdownMenu/index.js +7 -3
  273. package/dist/esm/ui/ElementBrowser/InsertMenu.js +1 -0
  274. package/dist/esm/ui/ElementBrowser/components/ElementList/ElementList.js +1 -0
  275. package/dist/esm/ui/LinkSearch/LinkSearchListItem.js +2 -2
  276. package/dist/esm/ui/Resizer/index.js +9 -1
  277. package/dist/esm/version-wrapper.js +1 -1
  278. package/dist/esm/version.json +1 -1
  279. package/dist/types/labs/next/full-page.d.ts +1 -1
  280. package/dist/types/nodeviews/ReactNodeView.d.ts +1 -1
  281. package/dist/types/nodeviews/SelectionBasedNodeView.d.ts +1 -0
  282. package/dist/types/plugins/analytics/types/enums.d.ts +1 -0
  283. package/dist/types/plugins/analytics/types/events.d.ts +7 -1
  284. package/dist/types/plugins/annotation/utils.d.ts +1 -1
  285. package/dist/types/plugins/avatar-group/index.d.ts +1 -0
  286. package/dist/types/plugins/avatar-group/ui/AvatarGroupPluginWrapper.d.ts +1 -0
  287. package/dist/types/plugins/before-primaryToolbar/index.d.ts +5 -0
  288. package/dist/types/plugins/before-primaryToolbar/ui/BeforePrimaryToolbarWrapper.d.ts +5 -0
  289. package/dist/types/plugins/code-bidi-warning/index.d.ts +4 -2
  290. package/dist/types/plugins/code-bidi-warning/pm-plugins/main.d.ts +4 -2
  291. package/dist/types/plugins/code-bidi-warning/pm-plugins/plugin-factory.d.ts +2 -1
  292. package/dist/types/plugins/code-bidi-warning/pm-plugins/types.d.ts +1 -0
  293. package/dist/types/plugins/code-block/index.d.ts +1 -1
  294. package/dist/types/plugins/code-block/nodeviews/highlighting-code-block.d.ts +12 -1
  295. package/dist/types/plugins/code-block/pm-plugins/main.d.ts +3 -1
  296. package/dist/types/plugins/code-block/types.d.ts +2 -0
  297. package/dist/types/plugins/feature-flags-context/get-enabled-feature-flag-keys.d.ts +1 -1
  298. package/dist/types/plugins/find-replace/FindReplaceToolbarButtonWithState.d.ts +15 -0
  299. package/dist/types/plugins/find-replace/index.d.ts +1 -0
  300. package/dist/types/plugins/find-replace/ui/Find.d.ts +1 -0
  301. package/dist/types/plugins/find-replace/ui/FindReplace.d.ts +1 -0
  302. package/dist/types/plugins/find-replace/ui/Replace.d.ts +1 -0
  303. package/dist/types/plugins/find-replace/ui/styles.d.ts +5 -14
  304. package/dist/types/plugins/floating-toolbar/ui/EmojiPickerButton.d.ts +1 -1
  305. package/dist/types/plugins/fragment/index.d.ts +5 -0
  306. package/dist/types/plugins/fragment/plugin-key.d.ts +2 -0
  307. package/dist/types/plugins/index.d.ts +2 -0
  308. package/dist/types/plugins/media/nodeviews/mediaInline.d.ts +3 -2
  309. package/dist/types/plugins/media/nodeviews/mediaSingle.d.ts +1 -1
  310. package/dist/types/plugins/media/nodeviews/styles.d.ts +2 -0
  311. package/dist/types/plugins/media/toolbar/commands.d.ts +3 -0
  312. package/dist/types/plugins/media/toolbar/filePreviewItem.d.ts +2 -0
  313. package/dist/types/plugins/media/types.d.ts +0 -1
  314. package/dist/types/plugins/panel/actions.d.ts +1 -1
  315. package/dist/types/plugins/panel/types.d.ts +8 -2
  316. package/dist/types/plugins/quick-insert/index.d.ts +2 -1
  317. package/dist/types/plugins/table/commands/insert.d.ts +3 -0
  318. package/dist/types/plugins/table/pm-plugins/main.d.ts +2 -1
  319. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/types.d.ts +1 -0
  320. package/dist/types/plugins/table/transforms/column-width.d.ts +4 -1
  321. package/dist/types/plugins/table/transforms/fix-tables.d.ts +3 -2
  322. package/dist/types/plugins/table/types.d.ts +8 -0
  323. package/dist/types/plugins/table/ui/consts.d.ts +1 -1
  324. package/dist/types/types/editor-appearance-component.d.ts +2 -2
  325. package/dist/types/types/editor-props.d.ts +11 -1
  326. package/dist/types/types/feature-flags.d.ts +13 -0
  327. package/dist/types/types/index.d.ts +1 -1
  328. package/dist/types/ui/Appearance/FullPage/FullPageToolbar.d.ts +2 -2
  329. package/dist/types/ui/Appearance/FullPage/MainToolbar.d.ts +10 -1
  330. package/dist/types/ui/ColorPalette/Color/index.d.ts +8 -5
  331. package/dist/types/ui/ColorPalette/index.d.ts +1 -0
  332. package/dist/types/ui/ConfigPanel/transformers.d.ts +7 -1
  333. package/dist/types/ui/ConfigPanel/utils.d.ts +0 -1
  334. package/dist/types/ui/Resizer/index.d.ts +1 -0
  335. package/package.json +35 -31
  336. package/dist/cjs/plugins/floating-toolbar/ui/EditorRemoveEmojiIcon.js +0 -38
  337. package/dist/es2019/plugins/floating-toolbar/ui/EditorRemoveEmojiIcon.js +0 -28
  338. package/dist/esm/plugins/floating-toolbar/ui/EditorRemoveEmojiIcon.js +0 -28
  339. package/dist/types/plugins/floating-toolbar/ui/EditorRemoveEmojiIcon.d.ts +0 -1
@@ -7,7 +7,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
7
7
 
8
8
  import { NodeSelection, Plugin } from 'prosemirror-state';
9
9
  import { uuid } from '@atlaskit/adf-schema';
10
- import { nodesBetweenChanged } from '../../../utils';
10
+ import { nodesBetweenChanged, SetAttrsStep } from '../../../utils';
11
11
  import { createSelectionClickHandler } from '../../selection/utils';
12
12
  import { decisionItemNodeView } from '../nodeviews/decisionItem';
13
13
  import { taskItemNodeViewFactory } from '../nodeviews/taskItem';
@@ -145,9 +145,9 @@ export function createPlugin(portalProviderAPI, eventDispatcher, providerFactory
145
145
  rest = _objectWithoutProperties(_node$attrs, ["localId"]);
146
146
 
147
147
  if (localId === undefined || localId === null || localId === '') {
148
- tr.setNodeMarkup(pos, undefined, _objectSpread({
148
+ tr.step(new SetAttrsStep(pos, _objectSpread({
149
149
  localId: uuid.generate()
150
- }, rest));
150
+ }, rest)));
151
151
  modified = true;
152
152
  }
153
153
  }
@@ -238,7 +238,8 @@ var ToolbarTextColor = /*#__PURE__*/function (_React$Component) {
238
238
  onClick: function onClick(color) {
239
239
  return _this2.changeTextColor(color, pluginState.disabled);
240
240
  },
241
- selectedColor: pluginState.color
241
+ selectedColor: pluginState.color,
242
+ isShowingMoreColors: isShowingMoreColors
242
243
  })), showMoreColorsToggle && /*#__PURE__*/React.createElement(ShowMoreWrapper, null, /*#__PURE__*/React.createElement(Button, {
243
244
  appearance: "subtle",
244
245
  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';
@@ -88,7 +88,8 @@ var textFormatting = function textFormatting() {
88
88
  disabled = _ref6.disabled;
89
89
  return /*#__PURE__*/React.createElement(WithPluginState, {
90
90
  plugins: {
91
- textFormattingState: textFormattingPluginKey
91
+ textFormattingState: textFormattingPluginKey,
92
+ clearFormattingPluginState: clearFormattingPluginKey
92
93
  },
93
94
  render: function render() {
94
95
  return /*#__PURE__*/React.createElement(Toolbar, {
@@ -1,6 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import React, { useMemo, useEffect, useRef, useCallback, useLayoutEffect } from 'react';
3
- import { text as colorsText, N200, N20, DN70, N800, DN600, DN300 } from '@atlaskit/theme/colors';
3
+ import { text as colorsText, N200, N20, DN70, N800, DN600, DN300 } from '@atlaskit/theme/colors'; // eslint-disable-next-line @atlaskit/design-system/no-deprecated-imports
4
+
4
5
  import { ItemGroup, itemThemeNamespace } from '@atlaskit/item';
5
6
  import { themed } from '@atlaskit/theme/components';
6
7
  import { ThemeProvider } from 'styled-components';
@@ -4,7 +4,8 @@ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
4
4
 
5
5
  import React, { useCallback, useMemo, useRef, useLayoutEffect } from 'react';
6
6
  import { N200 } from '@atlaskit/theme/colors';
7
- import { borderRadius } from '@atlaskit/theme/constants';
7
+ import { borderRadius } from '@atlaskit/theme/constants'; // eslint-disable-next-line @atlaskit/design-system/no-deprecated-imports
8
+
8
9
  import Item from '@atlaskit/item';
9
10
  import { relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles';
10
11
  import styled from 'styled-components';
@@ -1,38 +1,78 @@
1
- import React from 'react';
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import React, { useState, useEffect } from 'react';
2
3
  import AvatarsWithPluginState from '../../../plugins/collab-edit/ui';
4
+ import FindReplaceToolbarButtonWithState from '../../../plugins/find-replace/FindReplaceToolbarButtonWithState';
5
+ import { BeforePrimaryToolbarWrapper } from '../../../plugins/before-primaryToolbar/ui/BeforePrimaryToolbarWrapper';
3
6
  import Toolbar from '../../Toolbar';
4
- import { MainToolbar, MainToolbarIconBefore, MainToolbarCustomComponentsSlot } from './MainToolbar';
7
+ import { MainToolbar, MainToolbarIconBefore, MainToolbarFirstChild, MainToolbarSecondChild, NonCustomToolbarWrapper, CustomToolbarWrapper, MAXIMUM_TWO_LINE_TOOLBAR_BREAKPOINT } from './MainToolbar';
5
8
  import { ContextPanelConsumer } from '../../ContextPanel/context';
6
9
  export var FullPageToolbar = /*#__PURE__*/React.memo(function (props) {
10
+ var _props$featureFlags, _props$featureFlags2, _props$featureFlags3, _props$collabEdit, _props$collabEdit2, _props$collabEdit3, _props$featureFlags4, _props$featureFlags5;
11
+
12
+ var _useState = useState(false),
13
+ _useState2 = _slicedToArray(_useState, 2),
14
+ shouldSplitToolbar = _useState2[0],
15
+ setShouldSplitToolbar = _useState2[1];
16
+
17
+ var nonCustomToolbar = /*#__PURE__*/React.createElement(NonCustomToolbarWrapper, null, props.beforeIcon && /*#__PURE__*/React.createElement(MainToolbarIconBefore, null, props.beforeIcon), /*#__PURE__*/React.createElement(Toolbar, {
18
+ editorView: props.editorView,
19
+ editorActions: props.editorActions,
20
+ eventDispatcher: props.eventDispatcher,
21
+ providerFactory: props.providerFactory,
22
+ appearance: props.appearance,
23
+ items: props.primaryToolbarComponents,
24
+ popupsMountPoint: props.popupsMountPoint,
25
+ popupsBoundariesElement: props.popupsBoundariesElement,
26
+ popupsScrollableElement: props.popupsScrollableElement,
27
+ disabled: props.disabled,
28
+ dispatchAnalyticsEvent: props.dispatchAnalyticsEvent,
29
+ containerElement: props.containerElement,
30
+ hasMinWidth: props.hasMinWidth
31
+ }));
32
+ var 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, {
33
+ beforePrimaryToolbarComponents: props.customPrimaryToolbarComponents.before
34
+ }) : 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, {
35
+ editorView: props.editorView,
36
+ eventDispatcher: props.eventDispatcher,
37
+ inviteToEditComponent: (_props$collabEdit = props.collabEdit) === null || _props$collabEdit === void 0 ? void 0 : _props$collabEdit.inviteToEditComponent,
38
+ inviteToEditHandler: (_props$collabEdit2 = props.collabEdit) === null || _props$collabEdit2 === void 0 ? void 0 : _props$collabEdit2.inviteToEditHandler,
39
+ isInviteToEditButtonSelected: (_props$collabEdit3 = props.collabEdit) === null || _props$collabEdit3 === void 0 ? void 0 : _props$collabEdit3.isInviteToEditButtonSelected
40
+ }), (_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, {
41
+ popupsBoundariesElement: props.popupsBoundariesElement,
42
+ popupsMountPoint: props.popupsMountPoint,
43
+ popupsScrollableElement: props.popupsScrollableElement,
44
+ editorView: props.editorView,
45
+ containerElement: props.containerElement,
46
+ dispatchAnalyticsEvent: props.dispatchAnalyticsEvent
47
+ }) : null, !!props.customPrimaryToolbarComponents && 'after' in props.customPrimaryToolbarComponents ? props.customPrimaryToolbarComponents.after : props.customPrimaryToolbarComponents);
48
+ useEffect(function () {
49
+ var _props$featureFlags6;
50
+
51
+ if ((_props$featureFlags6 = props.featureFlags) !== null && _props$featureFlags6 !== void 0 && _props$featureFlags6.twoLineEditorToolbar) {
52
+ var updateOnResize = function updateOnResize() {
53
+ setShouldSplitToolbar(window.innerWidth <= MAXIMUM_TWO_LINE_TOOLBAR_BREAKPOINT);
54
+ };
55
+
56
+ window.addEventListener('resize', updateOnResize);
57
+ updateOnResize();
58
+ return function () {
59
+ return window.removeEventListener('resize', updateOnResize);
60
+ };
61
+ }
62
+ });
7
63
  return /*#__PURE__*/React.createElement(ContextPanelConsumer, null, function (_ref) {
8
- var _props$featureFlags;
64
+ var _props$featureFlags7, _props$featureFlags8, _props$featureFlags9;
9
65
 
10
66
  var contextPanelWidth = _ref.width;
11
67
  return /*#__PURE__*/React.createElement(MainToolbar, {
12
68
  "data-testid": "ak-editor-main-toolbar",
13
- showKeyline: props.showKeyline || contextPanelWidth > 0
14
- }, props.beforeIcon && /*#__PURE__*/React.createElement(MainToolbarIconBefore, null, props.beforeIcon), /*#__PURE__*/React.createElement(Toolbar, {
15
- editorView: props.editorView,
16
- editorActions: props.editorActions,
17
- eventDispatcher: props.eventDispatcher,
18
- providerFactory: props.providerFactory,
19
- appearance: props.appearance,
20
- items: props.primaryToolbarComponents,
21
- popupsMountPoint: props.popupsMountPoint,
22
- popupsBoundariesElement: props.popupsBoundariesElement,
23
- popupsScrollableElement: props.popupsScrollableElement,
24
- disabled: props.disabled,
25
- dispatchAnalyticsEvent: props.dispatchAnalyticsEvent,
26
- containerElement: props.containerElement,
27
- hasMinWidth: props.hasMinWidth
28
- }), /*#__PURE__*/React.createElement(MainToolbarCustomComponentsSlot, {
29
- "data-testid": 'avatar-group-outside-plugin'
30
- }, (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, {
31
- editorView: props.editorView,
32
- eventDispatcher: props.eventDispatcher,
33
- inviteToEditComponent: props.collabEdit && props.collabEdit.inviteToEditComponent,
34
- inviteToEditHandler: props.collabEdit && props.collabEdit.inviteToEditHandler,
35
- isInviteToEditButtonSelected: props.collabEdit && props.collabEdit.isInviteToEditButtonSelected
36
- }), props.customPrimaryToolbarComponents));
69
+ showKeyline: props.showKeyline || contextPanelWidth > 0,
70
+ twoLineEditorToolbar: !!((_props$featureFlags7 = props.featureFlags) !== null && _props$featureFlags7 !== void 0 && _props$featureFlags7.twoLineEditorToolbar)
71
+ }, /*#__PURE__*/React.createElement(MainToolbarFirstChild, {
72
+ twoLineEditorToolbar: !!((_props$featureFlags8 = props.featureFlags) !== null && _props$featureFlags8 !== void 0 && _props$featureFlags8.twoLineEditorToolbar)
73
+ }, shouldSplitToolbar ? customToolbar : nonCustomToolbar), /*#__PURE__*/React.createElement(MainToolbarSecondChild, {
74
+ "data-testid": 'avatar-group-outside-plugin',
75
+ twoLineEditorToolbar: !!((_props$featureFlags9 = props.featureFlags) !== null && _props$featureFlags9 !== void 0 && _props$featureFlags9.twoLineEditorToolbar)
76
+ }, shouldSplitToolbar ? nonCustomToolbar : customToolbar));
37
77
  });
38
78
  });
@@ -1,19 +1,32 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
2
 
3
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
3
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
4
4
 
5
5
  import styled from 'styled-components';
6
6
  import { N30 } from '@atlaskit/theme/colors';
7
7
  import { gridSize } from '@atlaskit/theme/constants';
8
8
  import { akEditorMenuZIndex, akEditorSwoopCubicBezier, akEditorToolbarKeylineHeight, akEditorMobileMaxWidth } from '@atlaskit/editor-shared-styles';
9
+ export var MAXIMUM_TWO_LINE_TOOLBAR_BREAKPOINT = 868;
9
10
  var toolbarLineHeight = 56;
10
- export var MainToolbar = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n align-items: center;\n box-shadow: ", ";\n transition: box-shadow 200ms ", ";\n z-index: ", ";\n display: flex;\n height: ", "px;\n flex-shrink: 0;\n background-color: white;\n\n & object {\n height: 0 !important;\n }\n\n @media (max-width: ", "px) {\n display: grid;\n height: calc(", "px * 2);\n }\n"])), function (props) {
11
+ export var MainToolbar = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n align-items: center;\n box-shadow: ", ";\n transition: box-shadow 200ms ", ";\n z-index: ", ";\n display: flex;\n height: ", "px;\n flex-shrink: 0;\n background-color: white;\n\n & object {\n height: 0 !important;\n }\n\n @media (max-width: ", "px) {\n ", "\n }\n\n @media (max-width: ", "px) {\n display: grid;\n height: calc(", "px * 2);\n }\n"])), function (props) {
11
12
  return props.showKeyline ? "0 ".concat(akEditorToolbarKeylineHeight, "px 0 0 ").concat(N30) : 'none';
12
- }, akEditorSwoopCubicBezier, akEditorMenuZIndex, toolbarLineHeight, akEditorMobileMaxWidth, toolbarLineHeight);
13
+ }, akEditorSwoopCubicBezier, akEditorMenuZIndex, toolbarLineHeight, MAXIMUM_TWO_LINE_TOOLBAR_BREAKPOINT, function (props) {
14
+ return props.twoLineEditorToolbar && "\n flex-wrap: wrap;\n height: calc(".concat(toolbarLineHeight, "px * 2);\n ");
15
+ }, akEditorMobileMaxWidth, toolbarLineHeight);
13
16
  MainToolbar.displayName = 'MainToolbar';
14
17
  export var MainToolbarIconBefore = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n margin: ", "px;\n height: ", "px;\n width: ", "px;\n @media (max-width: ", "px) {\n grid-column: 1;\n grid-row: 1;\n }\n"])), gridSize() * 2, gridSize() * 4, gridSize() * 4, akEditorMobileMaxWidth);
15
18
  MainToolbarIconBefore.displayName = 'MainToolbarIconBefore';
16
- export var MainToolbarCustomComponentsSlot = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n justify-content: flex-end;\n flex-grow: 1;\n // ED-10241: We add fit-content to ensure that MainToolbar does not\n // shrink more than the size of its contents. This will prevent the\n // find/replace icon from being overlapped during a confluence\n // publish operation\n min-width: fit-content;\n @media (max-width: ", "px) {\n grid-column: 1;\n grid-row: 1;\n }\n"])), akEditorMobileMaxWidth);
17
- MainToolbarCustomComponentsSlot.displayName = 'MainToolbar';
18
- export var SecondaryToolbar = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n box-sizing: border-box;\n justify-content: flex-end;\n align-items: center;\n flex-shrink: 0;\n display: flex;\n padding: 24px 0;\n"])));
19
- SecondaryToolbar.displayName = 'SecondaryToolbar';
19
+ export var MainToolbarFirstChild = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n flex-grow: 1;\n\n @media (max-width: ", "px) {\n ", "\n }\n @media (max-width: ", "px) {\n grid-column: 1;\n grid-row: 1;\n }\n"])), MAXIMUM_TWO_LINE_TOOLBAR_BREAKPOINT, function (props) {
20
+ return props.twoLineEditorToolbar && "\n flex: 1 1 100%;\n height: ".concat(toolbarLineHeight, "px;\n justify-content: flex-end;\n // ED-10241: We add fit-content to ensure that MainToolbar does not\n // shrink more than the size of its contents. This will prevent the\n // find/replace icon from being overlapped during a confluence\n // publish operation\n min-width: fit-content;\n ");
21
+ }, akEditorMobileMaxWidth);
22
+ MainToolbarFirstChild.displayName = 'MainToolbarFirstChild';
23
+ export var MainToolbarSecondChild = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n // ED-10241: We add fit-content to ensure that MainToolbar does not\n // shrink more than the size of its contents. This will prevent the\n // find/replace icon from being overlapped during a confluence\n // publish operation\n min-width: fit-content;\n @media (max-width: ", "px) {\n ", "\n }\n"])), MAXIMUM_TWO_LINE_TOOLBAR_BREAKPOINT, function (props) {
24
+ return props.twoLineEditorToolbar && "\n display: flex;\n flex-grow: 1;\n flex: 1 1 100%;\n margin: auto;\n height: ".concat(toolbarLineHeight, "px;\n min-width: 0;\n ");
25
+ });
26
+ MainToolbarSecondChild.displayName = 'MainToolbarSecondChild';
27
+ export var SecondaryToolbar = styled.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n box-sizing: border-box;\n justify-content: flex-end;\n align-items: center;\n flex-shrink: 0;\n display: flex;\n padding: 24px 0;\n"])));
28
+ SecondaryToolbar.displayName = 'SecondaryToolbar';
29
+ export var NonCustomToolbarWrapper = styled.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n align-items: center;\n display: flex;\n flex-grow: 1;\n"])));
30
+ NonCustomToolbarWrapper.displayName = 'NonCustomToolbar';
31
+ export var CustomToolbarWrapper = styled.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n align-items: center;\n display: flex;\n"])));
32
+ CustomToolbarWrapper.displayName = 'CustomToolbar';
@@ -12,19 +12,10 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
12
12
 
13
13
  import React from 'react';
14
14
  import { PureComponent } from 'react';
15
- import { defineMessages, injectIntl } from 'react-intl';
16
15
  import EditorDoneIcon from '@atlaskit/icon/glyph/editor/done';
17
16
  import { N0 } from '@atlaskit/theme/colors';
18
17
  import { Button, ButtonWrapper } from './styles';
19
- import Tooltip from '@atlaskit/tooltip'; // IMO these should live inside @atlaskit/theme
20
-
21
- var messages = defineMessages({
22
- selected: {
23
- id: 'fabric.editor.selected',
24
- defaultMessage: 'Selected',
25
- description: 'If the item is selected or not.'
26
- }
27
- });
18
+ import Tooltip from '@atlaskit/tooltip';
28
19
 
29
20
  var Color = /*#__PURE__*/function (_PureComponent) {
30
21
  _inherits(Color, _PureComponent);
@@ -62,19 +53,20 @@ var Color = /*#__PURE__*/function (_PureComponent) {
62
53
  key: "render",
63
54
  value: function render() {
64
55
  var _this$props2 = this.props,
56
+ autoFocus = _this$props2.autoFocus,
65
57
  tabIndex = _this$props2.tabIndex,
66
58
  value = _this$props2.value,
67
59
  label = _this$props2.label,
68
60
  isSelected = _this$props2.isSelected,
69
61
  borderColor = _this$props2.borderColor,
70
62
  _this$props2$checkMar = _this$props2.checkMarkColor,
71
- checkMarkColor = _this$props2$checkMar === void 0 ? N0 : _this$props2$checkMar,
72
- formatMessage = _this$props2.intl.formatMessage;
73
- var ariaLabelText = isSelected ? "".concat(label, " ").concat(formatMessage(messages.selected)) : label;
63
+ checkMarkColor = _this$props2$checkMar === void 0 ? N0 : _this$props2$checkMar;
74
64
  return /*#__PURE__*/React.createElement(Tooltip, {
75
65
  content: label
76
66
  }, /*#__PURE__*/React.createElement(ButtonWrapper, null, /*#__PURE__*/React.createElement(Button, {
77
- "aria-label": ariaLabelText,
67
+ "aria-label": label,
68
+ role: "radio",
69
+ "aria-checked": isSelected,
78
70
  onClick: this.onClick,
79
71
  onMouseDown: this.onMouseDown,
80
72
  tabIndex: tabIndex,
@@ -82,7 +74,8 @@ var Color = /*#__PURE__*/function (_PureComponent) {
82
74
  style: {
83
75
  backgroundColor: value || 'transparent',
84
76
  border: "1px solid ".concat(borderColor)
85
- }
77
+ },
78
+ autoFocus: autoFocus
86
79
  }, isSelected && /*#__PURE__*/React.createElement(EditorDoneIcon, {
87
80
  primaryColor: checkMarkColor,
88
81
  label: ""
@@ -93,4 +86,4 @@ var Color = /*#__PURE__*/function (_PureComponent) {
93
86
  return Color;
94
87
  }(PureComponent);
95
88
 
96
- export default injectIntl(Color);
89
+ export default Color;
@@ -25,6 +25,7 @@ var ColorPalette = function ColorPalette(props) {
25
25
  onClick = props.onClick,
26
26
  selectedColor = props.selectedColor,
27
27
  className = props.className,
28
+ isShowingMoreColors = props.isShowingMoreColors,
28
29
  formatMessage = props.intl.formatMessage;
29
30
  var colorsPerRow = React.useMemo(function () {
30
31
  return palette.reduce(function (resultArray, item, index) {
@@ -35,11 +36,12 @@ var ColorPalette = function ColorPalette(props) {
35
36
  return resultArray;
36
37
  }, []);
37
38
  }, [palette, cols]);
38
- return /*#__PURE__*/React.createElement(React.Fragment, null, colorsPerRow.map(function (row) {
39
+ return /*#__PURE__*/React.createElement(React.Fragment, null, colorsPerRow.map(function (row, rowIdx) {
39
40
  return /*#__PURE__*/React.createElement(ColorPaletteWrapper, {
40
41
  className: className,
41
- key: "row-first-color-".concat(row[0].value)
42
- }, row.map(function (_ref) {
42
+ key: "row-first-color-".concat(row[0].value),
43
+ role: "radiogroup"
44
+ }, row.map(function (_ref, colorIdx) {
43
45
  var value = _ref.value,
44
46
  label = _ref.label,
45
47
  border = _ref.border,
@@ -51,7 +53,8 @@ var ColorPalette = function ColorPalette(props) {
51
53
  label: message ? formatMessage(message) : label,
52
54
  onClick: onClick,
53
55
  isSelected: value === selectedColor,
54
- checkMarkColor: getContrastColor(value, [N0, N500])
56
+ checkMarkColor: getContrastColor(value, [N0, N500]),
57
+ autoFocus: isShowingMoreColors && rowIdx === 1 && colorIdx === 0
55
58
  });
56
59
  }));
57
60
  }));
@@ -18,7 +18,7 @@ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '../../plu
18
18
 
19
19
  var ColorPickerButtonWrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n"]))); // Control the size of color picker buttons and preview
20
20
 
21
- var ColorPickerWrapper = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n border-radius: ", "px;\n background-color: white;\n box-shadow: 0 4px 8px -2px ", ", 0 0 1px ", ";\n padding: 4px;\n"])), borderRadius(), N60A, N60A);
21
+ var ColorPickerWrapper = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n border-radius: ", "px;\n background-color: white;\n box-shadow: 0 4px 8px -2px ", ", 0 0 1px ", ";\n padding: 8px 0px;\n"])), borderRadius(), N60A, N60A);
22
22
 
23
23
  var ColorPickerButton = function ColorPickerButton(props) {
24
24
  var _props$size, _props$size2;
@@ -9,10 +9,6 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstruct
9
9
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
10
10
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
11
11
 
12
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
13
-
14
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
15
-
16
12
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
17
13
 
18
14
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -23,11 +19,12 @@ import { withAnalyticsContext, withAnalyticsEvents } from '@atlaskit/analytics-n
23
19
  import Form from '@atlaskit/form';
24
20
  import { isTabGroup } from '@atlaskit/editor-common/extensions';
25
21
  import _isEqual from 'lodash/isEqual';
22
+ import _mergeRecursive from 'lodash/merge';
26
23
  import { fireAnalyticsEvent, EVENT_TYPE, ACTION_SUBJECT, ACTION } from '../../plugins/analytics';
27
24
  import LoadingState from './LoadingState';
28
25
  import Header from './Header';
29
26
  import ErrorMessage from './ErrorMessage';
30
- import { serialize, deserialize } from './transformers';
27
+ import { serialize, deserialize, findDuplicateFields } from './transformers';
31
28
  import { injectIntl } from 'react-intl';
32
29
  import ButtonGroup from '@atlaskit/button/button-group';
33
30
  import Button from '@atlaskit/button/custom-theme-button';
@@ -36,6 +33,7 @@ import { pluginKey as extensionPluginKey } from '../../plugins/extension/plugin-
36
33
  import WithPluginState from '../WithPluginState';
37
34
  import FormContent from './FormContent';
38
35
  import { messages } from './messages';
36
+ import { FormErrorBoundary } from './FormErrorBoundary';
39
37
 
40
38
  function ConfigForm(_ref) {
41
39
  var canSave = _ref.canSave,
@@ -49,7 +47,17 @@ function ConfigForm(_ref) {
49
47
  onCancel = _ref.onCancel,
50
48
  onFieldChange = _ref.onFieldChange,
51
49
  parameters = _ref.parameters,
52
- submitting = _ref.submitting;
50
+ submitting = _ref.submitting,
51
+ contextIdentifierProvider = _ref.contextIdentifierProvider;
52
+ useEffect(function () {
53
+ if (fields) {
54
+ var firstDuplicateField = findDuplicateFields(fields);
55
+
56
+ if (firstDuplicateField) {
57
+ throw new Error("Possible duplicate field name: `".concat(firstDuplicateField.name, "`."));
58
+ }
59
+ }
60
+ }, [fields]);
53
61
 
54
62
  if (isLoading || !hasParsedParameters && errorMessage === null) {
55
63
  return /*#__PURE__*/React.createElement(LoadingState, null);
@@ -61,44 +69,36 @@ function ConfigForm(_ref) {
61
69
  });
62
70
  }
63
71
 
64
- return /*#__PURE__*/React.createElement(WithPluginState, {
65
- plugins: {
66
- extension: extensionPluginKey
67
- },
68
- render: function render(_ref2) {
69
- var extension = _ref2.extension;
70
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormContent, {
71
- fields: fields,
72
- parameters: parameters,
73
- extensionManifest: extensionManifest,
74
- onFieldChange: onFieldChange,
75
- firstVisibleFieldName: firstVisibleFieldName,
76
- contextIdentifierProvider: extension === null || extension === void 0 ? void 0 : extension.contextIdentifierProvider
77
- }), /*#__PURE__*/React.createElement("div", {
78
- style: canSave ? {} : {
79
- display: 'none'
80
- }
81
- }, /*#__PURE__*/React.createElement(FormFooter, {
82
- align: "start"
83
- }, /*#__PURE__*/React.createElement(ButtonGroup, null, /*#__PURE__*/React.createElement(Button, {
84
- type: "submit",
85
- appearance: "primary"
86
- }, intl.formatMessage(messages.submit)), /*#__PURE__*/React.createElement(Button, {
87
- appearance: "default",
88
- isDisabled: submitting,
89
- onClick: onCancel
90
- }, intl.formatMessage(messages.cancel))))));
72
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormContent, {
73
+ fields: fields,
74
+ parameters: parameters,
75
+ extensionManifest: extensionManifest,
76
+ onFieldChange: onFieldChange,
77
+ firstVisibleFieldName: firstVisibleFieldName,
78
+ contextIdentifierProvider: contextIdentifierProvider
79
+ }), /*#__PURE__*/React.createElement("div", {
80
+ style: canSave ? {} : {
81
+ display: 'none'
91
82
  }
92
- });
83
+ }, /*#__PURE__*/React.createElement(FormFooter, {
84
+ align: "start"
85
+ }, /*#__PURE__*/React.createElement(ButtonGroup, null, /*#__PURE__*/React.createElement(Button, {
86
+ type: "submit",
87
+ appearance: "primary"
88
+ }, intl.formatMessage(messages.submit)), /*#__PURE__*/React.createElement(Button, {
89
+ appearance: "default",
90
+ isDisabled: submitting,
91
+ onClick: onCancel
92
+ }, intl.formatMessage(messages.cancel))))));
93
93
  }
94
94
 
95
95
  var ConfigFormIntl = injectIntl(ConfigForm);
96
96
 
97
- var WithOnFieldChange = function WithOnFieldChange(_ref3) {
98
- var getState = _ref3.getState,
99
- autoSave = _ref3.autoSave,
100
- handleSubmit = _ref3.handleSubmit,
101
- children = _ref3.children;
97
+ var WithOnFieldChange = function WithOnFieldChange(_ref2) {
98
+ var getState = _ref2.getState,
99
+ autoSave = _ref2.autoSave,
100
+ handleSubmit = _ref2.handleSubmit,
101
+ children = _ref2.children;
102
102
  var getStateRef = useRef(getState);
103
103
  useEffect(function () {
104
104
  getStateRef.current = getState;
@@ -153,14 +153,52 @@ var ConfigPanel = /*#__PURE__*/function (_React$Component) {
153
153
  });
154
154
 
155
155
  _defineProperty(_assertThisInitialized(_this), "backfillTabFormData", function (fields, formData, currentParameters) {
156
- var mergedTabGroups = fields.filter(isTabGroup).reduce(function (acc, field) {
157
- return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, field.name, _objectSpread(_objectSpread({}, currentParameters[field.name] || {}), formData[field.name] || {})));
156
+ var getRelevantData = function getRelevantData(field, formParams, currentParams, backfill) {
157
+ if (field.hasGroupedValues && !(field.name in backfill)) {
158
+ backfill[field.name] = {};
159
+ }
160
+
161
+ var actualFormParams = field.hasGroupedValues ? formParams[field.name] || {} : formParams;
162
+ var actualCurrentParams = field.hasGroupedValues ? currentParams[field.name] || {} : currentParams;
163
+ var actualBackfillParams = field.hasGroupedValues ? backfill[field.name] : backfill;
164
+ return {
165
+ formParams: actualFormParams,
166
+ currentParams: actualCurrentParams,
167
+ backfillParams: actualBackfillParams
168
+ };
169
+ }; // Traverse any tab structures and backfill field values on tabs
170
+ // which aren't shown. This filter should be ok because tabs are
171
+ // currently only allowed on top level
172
+
173
+
174
+ var mergedTabGroups = fields.filter(isTabGroup).reduce(function (missingBackfill, tabGroup) {
175
+ var _getRelevantData = getRelevantData(tabGroup, formData, currentParameters, missingBackfill),
176
+ tabGroupFormData = _getRelevantData.formParams,
177
+ tabGroupCurrentData = _getRelevantData.currentParams,
178
+ tabGroupParams = _getRelevantData.backfillParams; // Loop through tabs and see what fields are missing from current data
179
+
180
+
181
+ tabGroup.fields.forEach(function (tabField) {
182
+ var _getRelevantData2 = getRelevantData(tabField, tabGroupFormData, tabGroupCurrentData, tabGroupParams),
183
+ tabFormData = _getRelevantData2.formParams,
184
+ tabCurrentData = _getRelevantData2.currentParams,
185
+ tabParams = _getRelevantData2.backfillParams;
186
+
187
+ tabField.fields.forEach(function (field) {
188
+ if (field.name in tabFormData || !(field.name in tabCurrentData)) {
189
+ return;
190
+ }
191
+
192
+ tabParams[field.name] = tabCurrentData[field.name];
193
+ });
194
+ });
195
+ return missingBackfill;
158
196
  }, {});
159
- return _objectSpread(_objectSpread({}, formData), mergedTabGroups);
197
+ return _mergeRecursive({}, mergedTabGroups, formData);
160
198
  });
161
199
 
162
200
  _defineProperty(_assertThisInitialized(_this), "handleSubmit", /*#__PURE__*/function () {
163
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(formData) {
201
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(formData) {
164
202
  var _this$props, fields, extensionManifest, onChange, serializedData;
165
203
 
166
204
  return _regeneratorRuntime.wrap(function _callee$(_context) {
@@ -202,12 +240,12 @@ var ConfigPanel = /*#__PURE__*/function (_React$Component) {
202
240
  }));
203
241
 
204
242
  return function (_x) {
205
- return _ref4.apply(this, arguments);
243
+ return _ref3.apply(this, arguments);
206
244
  };
207
245
  }());
208
246
 
209
247
  _defineProperty(_assertThisInitialized(_this), "parseParameters", /*#__PURE__*/function () {
210
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(fields, parameters) {
248
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(fields, parameters) {
211
249
  var extensionManifest, currentParameters;
212
250
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
213
251
  while (1) {
@@ -256,7 +294,7 @@ var ConfigPanel = /*#__PURE__*/function (_React$Component) {
256
294
  }));
257
295
 
258
296
  return function (_x2, _x3) {
259
- return _ref5.apply(this, arguments);
297
+ return _ref4.apply(this, arguments);
260
298
  };
261
299
  }());
262
300
 
@@ -414,10 +452,10 @@ var ConfigPanel = /*#__PURE__*/function (_React$Component) {
414
452
  handleKeyDown = this.handleKeyDown;
415
453
  return /*#__PURE__*/React.createElement(Form, {
416
454
  onSubmit: handleSubmit
417
- }, function (_ref6) {
418
- var formProps = _ref6.formProps,
419
- getState = _ref6.getState,
420
- submitting = _ref6.submitting;
455
+ }, function (_ref5) {
456
+ var formProps = _ref5.formProps,
457
+ getState = _ref5.getState,
458
+ submitting = _ref5.submitting;
421
459
  return /*#__PURE__*/React.createElement(WithOnFieldChange, {
422
460
  autoSave: !!autoSave,
423
461
  getState: getState,
@@ -428,18 +466,31 @@ var ConfigPanel = /*#__PURE__*/function (_React$Component) {
428
466
  noValidate: true,
429
467
  onKeyDown: handleKeyDown,
430
468
  "data-testid": "extension-config-panel"
431
- }), _this2.renderHeader(extensionManifest), /*#__PURE__*/React.createElement(ConfigFormIntl, {
432
- canSave: !autoSave,
433
- errorMessage: errorMessage,
434
- extensionManifest: extensionManifest,
435
- fields: fields,
436
- firstVisibleFieldName: firstVisibleFieldName,
437
- hasParsedParameters: hasParsedParameters,
438
- isLoading: isLoading || false,
439
- onCancel: onCancel,
440
- onFieldChange: onFieldChange,
441
- parameters: currentParameters,
442
- submitting: submitting
469
+ }), _this2.renderHeader(extensionManifest), /*#__PURE__*/React.createElement(WithPluginState, {
470
+ plugins: {
471
+ extension: extensionPluginKey
472
+ },
473
+ render: function render(_ref6) {
474
+ var extension = _ref6.extension;
475
+ return /*#__PURE__*/React.createElement(FormErrorBoundary, {
476
+ contextIdentifierProvider: extension === null || extension === void 0 ? void 0 : extension.contextIdentifierProvider,
477
+ extensionKey: extensionManifest.key,
478
+ fields: fields || []
479
+ }, /*#__PURE__*/React.createElement(ConfigFormIntl, {
480
+ canSave: !autoSave,
481
+ errorMessage: errorMessage,
482
+ extensionManifest: extensionManifest,
483
+ fields: fields,
484
+ firstVisibleFieldName: firstVisibleFieldName,
485
+ hasParsedParameters: hasParsedParameters,
486
+ isLoading: isLoading || false,
487
+ onCancel: onCancel,
488
+ onFieldChange: onFieldChange,
489
+ parameters: currentParameters,
490
+ submitting: submitting,
491
+ contextIdentifierProvider: extension === null || extension === void 0 ? void 0 : extension.contextIdentifierProvider
492
+ }));
493
+ }
443
494
  }));
444
495
  });
445
496
  });