@atlaskit/editor-core 149.0.1 → 150.0.2

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 (250) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/cjs/create-editor/create-plugins-list.js +2 -1
  3. package/dist/cjs/i18n/cs.js +18 -2
  4. package/dist/cjs/i18n/da.js +18 -2
  5. package/dist/cjs/i18n/de.js +18 -2
  6. package/dist/cjs/i18n/es.js +13 -2
  7. package/dist/cjs/i18n/et.js +0 -1
  8. package/dist/cjs/i18n/fi.js +13 -2
  9. package/dist/cjs/i18n/fr.js +13 -2
  10. package/dist/cjs/i18n/hu.js +14 -3
  11. package/dist/cjs/i18n/it.js +18 -2
  12. package/dist/cjs/i18n/ja.js +13 -2
  13. package/dist/cjs/i18n/ko.js +13 -2
  14. package/dist/cjs/i18n/nb.js +13 -2
  15. package/dist/cjs/i18n/nl.js +18 -2
  16. package/dist/cjs/i18n/pl.js +16 -2
  17. package/dist/cjs/i18n/pt_BR.js +14 -3
  18. package/dist/cjs/i18n/pt_PT.js +0 -1
  19. package/dist/cjs/i18n/ru.js +13 -2
  20. package/dist/cjs/i18n/sk.js +0 -1
  21. package/dist/cjs/i18n/sv.js +18 -2
  22. package/dist/cjs/i18n/th.js +18 -2
  23. package/dist/cjs/i18n/tr.js +16 -2
  24. package/dist/cjs/i18n/uk.js +18 -2
  25. package/dist/cjs/i18n/vi.js +13 -2
  26. package/dist/cjs/i18n/zh.js +18 -2
  27. package/dist/cjs/i18n/zh_TW.js +18 -2
  28. package/dist/cjs/messages.js +4 -4
  29. package/dist/cjs/plugins/analytics/types/enums.js +0 -1
  30. package/dist/cjs/plugins/analytics/types/node-events.js +1 -0
  31. package/dist/cjs/plugins/collab-edit/ui/to-avatar.js +4 -8
  32. package/dist/cjs/plugins/floating-toolbar/ui/{EditorHideEmojiIcon.js → EditorRemoveEmojiIcon.js} +2 -2
  33. package/dist/cjs/plugins/floating-toolbar/ui/EmojiPickerButton.js +5 -2
  34. package/dist/cjs/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +14 -0
  35. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/index.js +19 -22
  36. package/dist/cjs/plugins/layout/actions.js +70 -16
  37. package/dist/cjs/plugins/layout/index.js +3 -2
  38. package/dist/cjs/plugins/layout/pm-plugins/main.js +3 -1
  39. package/dist/cjs/plugins/layout/toolbar-messages.js +5 -0
  40. package/dist/cjs/plugins/layout/toolbar.js +11 -2
  41. package/dist/cjs/plugins/list/pm-plugins/main.js +0 -38
  42. package/dist/cjs/plugins/mentions/analytics.js +2 -3
  43. package/dist/cjs/plugins/mentions/type-ahead/index.js +7 -12
  44. package/dist/cjs/plugins/panel/nodeviews/panel.js +7 -3
  45. package/dist/cjs/plugins/panel/toolbar.js +8 -6
  46. package/dist/cjs/plugins/panel/toolbar.test.js +25 -11
  47. package/dist/cjs/plugins/table/commands/insert.js +25 -10
  48. package/dist/cjs/plugins/table/commands/misc.js +3 -3
  49. package/dist/cjs/plugins/table/nodeviews/TableComponent.js +5 -4
  50. package/dist/cjs/plugins/table/nodeviews/tableCell.js +20 -6
  51. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +3 -1
  52. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +1 -0
  53. package/dist/cjs/plugins/table/toolbar.js +4 -4
  54. package/dist/cjs/plugins/table/transforms/column-width.js +72 -12
  55. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +1 -1
  56. package/dist/cjs/plugins/table/ui/FloatingInsertButton/index.js +1 -1
  57. package/dist/cjs/plugins/table/utils/table.js +17 -2
  58. package/dist/cjs/plugins/text-color/ui/ToolbarTextColor/index.js +3 -7
  59. package/dist/cjs/plugins/type-ahead/transforms/open-typeahead-at-cursor.js +20 -3
  60. package/dist/cjs/plugins/type-ahead/ui/TypeAheadPopup.js +1 -3
  61. package/dist/cjs/ui/ColorPickerButton/index.js +5 -2
  62. package/dist/cjs/ui/ColorPickerButton/index.test.js +16 -0
  63. package/dist/cjs/ui/ConfigPanel/Fields/Expand.js +2 -4
  64. package/dist/cjs/ui/ConfigPanel/Fields/Fieldset.js +1 -3
  65. package/dist/cjs/ui/ConfigPanel/NestedForms/RemovableField.js +1 -3
  66. package/dist/cjs/version-wrapper.js +1 -1
  67. package/dist/cjs/version.json +1 -1
  68. package/dist/es2019/create-editor/create-plugins-list.js +2 -1
  69. package/dist/es2019/i18n/cs.js +18 -2
  70. package/dist/es2019/i18n/da.js +18 -2
  71. package/dist/es2019/i18n/de.js +18 -2
  72. package/dist/es2019/i18n/es.js +13 -2
  73. package/dist/es2019/i18n/et.js +0 -1
  74. package/dist/es2019/i18n/fi.js +13 -2
  75. package/dist/es2019/i18n/fr.js +13 -2
  76. package/dist/es2019/i18n/hu.js +14 -3
  77. package/dist/es2019/i18n/it.js +18 -2
  78. package/dist/es2019/i18n/ja.js +13 -2
  79. package/dist/es2019/i18n/ko.js +13 -2
  80. package/dist/es2019/i18n/nb.js +13 -2
  81. package/dist/es2019/i18n/nl.js +18 -2
  82. package/dist/es2019/i18n/pl.js +16 -2
  83. package/dist/es2019/i18n/pt_BR.js +14 -3
  84. package/dist/es2019/i18n/pt_PT.js +0 -1
  85. package/dist/es2019/i18n/ru.js +13 -2
  86. package/dist/es2019/i18n/sk.js +0 -1
  87. package/dist/es2019/i18n/sv.js +18 -2
  88. package/dist/es2019/i18n/th.js +18 -2
  89. package/dist/es2019/i18n/tr.js +16 -2
  90. package/dist/es2019/i18n/uk.js +18 -2
  91. package/dist/es2019/i18n/vi.js +13 -2
  92. package/dist/es2019/i18n/zh.js +18 -2
  93. package/dist/es2019/i18n/zh_TW.js +18 -2
  94. package/dist/es2019/messages.js +4 -4
  95. package/dist/es2019/plugins/analytics/types/enums.js +0 -1
  96. package/dist/es2019/plugins/analytics/types/node-events.js +1 -0
  97. package/dist/es2019/plugins/collab-edit/ui/to-avatar.js +2 -6
  98. package/dist/es2019/plugins/floating-toolbar/ui/{EditorHideEmojiIcon.js → EditorRemoveEmojiIcon.js} +1 -1
  99. package/dist/es2019/plugins/floating-toolbar/ui/EmojiPickerButton.js +5 -3
  100. package/dist/es2019/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +14 -0
  101. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/index.js +20 -23
  102. package/dist/es2019/plugins/layout/actions.js +64 -13
  103. package/dist/es2019/plugins/layout/index.js +3 -2
  104. package/dist/es2019/plugins/layout/pm-plugins/main.js +3 -1
  105. package/dist/es2019/plugins/layout/toolbar-messages.js +5 -0
  106. package/dist/es2019/plugins/layout/toolbar.js +10 -2
  107. package/dist/es2019/plugins/list/pm-plugins/main.js +1 -41
  108. package/dist/es2019/plugins/mentions/analytics.js +2 -3
  109. package/dist/es2019/plugins/mentions/type-ahead/index.js +9 -15
  110. package/dist/es2019/plugins/panel/nodeviews/panel.js +5 -3
  111. package/dist/es2019/plugins/panel/toolbar.js +8 -6
  112. package/dist/es2019/plugins/panel/toolbar.test.js +18 -8
  113. package/dist/es2019/plugins/table/commands/insert.js +27 -12
  114. package/dist/es2019/plugins/table/commands/misc.js +3 -3
  115. package/dist/es2019/plugins/table/nodeviews/TableComponent.js +5 -4
  116. package/dist/es2019/plugins/table/nodeviews/tableCell.js +19 -6
  117. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +1 -2
  118. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +1 -1
  119. package/dist/es2019/plugins/table/toolbar.js +4 -4
  120. package/dist/es2019/plugins/table/transforms/column-width.js +62 -11
  121. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +1 -1
  122. package/dist/es2019/plugins/table/ui/FloatingInsertButton/index.js +1 -1
  123. package/dist/es2019/plugins/table/utils/table.js +7 -1
  124. package/dist/es2019/plugins/text-color/ui/ToolbarTextColor/index.js +3 -7
  125. package/dist/es2019/plugins/type-ahead/transforms/open-typeahead-at-cursor.js +20 -3
  126. package/dist/es2019/plugins/type-ahead/ui/TypeAheadPopup.js +1 -2
  127. package/dist/es2019/ui/ColorPickerButton/index.js +6 -3
  128. package/dist/es2019/ui/ColorPickerButton/index.test.js +15 -0
  129. package/dist/es2019/ui/ConfigPanel/Fields/Expand.js +3 -4
  130. package/dist/es2019/ui/ConfigPanel/Fields/Fieldset.js +2 -3
  131. package/dist/es2019/ui/ConfigPanel/NestedForms/RemovableField.js +1 -2
  132. package/dist/es2019/version-wrapper.js +1 -1
  133. package/dist/es2019/version.json +1 -1
  134. package/dist/esm/create-editor/create-plugins-list.js +2 -1
  135. package/dist/esm/i18n/cs.js +18 -2
  136. package/dist/esm/i18n/da.js +18 -2
  137. package/dist/esm/i18n/de.js +18 -2
  138. package/dist/esm/i18n/es.js +13 -2
  139. package/dist/esm/i18n/et.js +0 -1
  140. package/dist/esm/i18n/fi.js +13 -2
  141. package/dist/esm/i18n/fr.js +13 -2
  142. package/dist/esm/i18n/hu.js +14 -3
  143. package/dist/esm/i18n/it.js +18 -2
  144. package/dist/esm/i18n/ja.js +13 -2
  145. package/dist/esm/i18n/ko.js +13 -2
  146. package/dist/esm/i18n/nb.js +13 -2
  147. package/dist/esm/i18n/nl.js +18 -2
  148. package/dist/esm/i18n/pl.js +16 -2
  149. package/dist/esm/i18n/pt_BR.js +14 -3
  150. package/dist/esm/i18n/pt_PT.js +0 -1
  151. package/dist/esm/i18n/ru.js +13 -2
  152. package/dist/esm/i18n/sk.js +0 -1
  153. package/dist/esm/i18n/sv.js +18 -2
  154. package/dist/esm/i18n/th.js +18 -2
  155. package/dist/esm/i18n/tr.js +16 -2
  156. package/dist/esm/i18n/uk.js +18 -2
  157. package/dist/esm/i18n/vi.js +13 -2
  158. package/dist/esm/i18n/zh.js +18 -2
  159. package/dist/esm/i18n/zh_TW.js +18 -2
  160. package/dist/esm/messages.js +4 -4
  161. package/dist/esm/plugins/analytics/types/enums.js +0 -1
  162. package/dist/esm/plugins/analytics/types/node-events.js +1 -0
  163. package/dist/esm/plugins/collab-edit/ui/to-avatar.js +4 -8
  164. package/dist/esm/plugins/floating-toolbar/ui/{EditorHideEmojiIcon.js → EditorRemoveEmojiIcon.js} +1 -1
  165. package/dist/esm/plugins/floating-toolbar/ui/EmojiPickerButton.js +6 -3
  166. package/dist/esm/plugins/floating-toolbar/ui/EmojiPickerButton.test.js +14 -0
  167. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/index.js +20 -23
  168. package/dist/esm/plugins/layout/actions.js +66 -13
  169. package/dist/esm/plugins/layout/index.js +3 -2
  170. package/dist/esm/plugins/layout/pm-plugins/main.js +3 -1
  171. package/dist/esm/plugins/layout/toolbar-messages.js +5 -0
  172. package/dist/esm/plugins/layout/toolbar.js +10 -2
  173. package/dist/esm/plugins/list/pm-plugins/main.js +1 -37
  174. package/dist/esm/plugins/mentions/analytics.js +2 -3
  175. package/dist/esm/plugins/mentions/type-ahead/index.js +7 -12
  176. package/dist/esm/plugins/panel/nodeviews/panel.js +5 -3
  177. package/dist/esm/plugins/panel/toolbar.js +8 -6
  178. package/dist/esm/plugins/panel/toolbar.test.js +25 -11
  179. package/dist/esm/plugins/table/commands/insert.js +26 -11
  180. package/dist/esm/plugins/table/commands/misc.js +3 -3
  181. package/dist/esm/plugins/table/nodeviews/TableComponent.js +5 -4
  182. package/dist/esm/plugins/table/nodeviews/tableCell.js +21 -7
  183. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +1 -2
  184. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +1 -1
  185. package/dist/esm/plugins/table/toolbar.js +4 -4
  186. package/dist/esm/plugins/table/transforms/column-width.js +62 -10
  187. package/dist/esm/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +1 -1
  188. package/dist/esm/plugins/table/ui/FloatingInsertButton/index.js +1 -1
  189. package/dist/esm/plugins/table/utils/table.js +9 -0
  190. package/dist/esm/plugins/text-color/ui/ToolbarTextColor/index.js +3 -7
  191. package/dist/esm/plugins/type-ahead/transforms/open-typeahead-at-cursor.js +20 -3
  192. package/dist/esm/plugins/type-ahead/ui/TypeAheadPopup.js +1 -2
  193. package/dist/esm/ui/ColorPickerButton/index.js +6 -3
  194. package/dist/esm/ui/ColorPickerButton/index.test.js +15 -0
  195. package/dist/esm/ui/ConfigPanel/Fields/Expand.js +2 -3
  196. package/dist/esm/ui/ConfigPanel/Fields/Fieldset.js +1 -2
  197. package/dist/esm/ui/ConfigPanel/NestedForms/RemovableField.js +1 -2
  198. package/dist/esm/version-wrapper.js +1 -1
  199. package/dist/esm/version.json +1 -1
  200. package/dist/types/editor.d.ts +1 -1
  201. package/dist/types/i18n/cs.d.ts +16 -0
  202. package/dist/types/i18n/da.d.ts +16 -0
  203. package/dist/types/i18n/de.d.ts +16 -0
  204. package/dist/types/i18n/es.d.ts +11 -0
  205. package/dist/types/i18n/et.d.ts +0 -1
  206. package/dist/types/i18n/fi.d.ts +11 -0
  207. package/dist/types/i18n/fr.d.ts +11 -0
  208. package/dist/types/i18n/hu.d.ts +11 -0
  209. package/dist/types/i18n/it.d.ts +16 -0
  210. package/dist/types/i18n/ja.d.ts +11 -0
  211. package/dist/types/i18n/ko.d.ts +11 -0
  212. package/dist/types/i18n/nb.d.ts +11 -0
  213. package/dist/types/i18n/nl.d.ts +16 -0
  214. package/dist/types/i18n/pl.d.ts +14 -0
  215. package/dist/types/i18n/pt_BR.d.ts +11 -0
  216. package/dist/types/i18n/pt_PT.d.ts +0 -1
  217. package/dist/types/i18n/ru.d.ts +11 -0
  218. package/dist/types/i18n/sk.d.ts +0 -1
  219. package/dist/types/i18n/sv.d.ts +16 -0
  220. package/dist/types/i18n/th.d.ts +16 -0
  221. package/dist/types/i18n/tr.d.ts +14 -0
  222. package/dist/types/i18n/uk.d.ts +16 -0
  223. package/dist/types/i18n/vi.d.ts +11 -0
  224. package/dist/types/i18n/zh.d.ts +16 -0
  225. package/dist/types/i18n/zh_TW.d.ts +16 -0
  226. package/dist/types/messages.d.ts +1 -1
  227. package/dist/types/plugins/analytics/analytics-queue.d.ts +1 -1
  228. package/dist/types/plugins/analytics/types/enums.d.ts +0 -1
  229. package/dist/types/plugins/analytics/types/general-events.d.ts +1 -1
  230. package/dist/types/plugins/analytics/types/list-events.d.ts +1 -5
  231. package/dist/types/plugins/analytics/types/node-events.d.ts +1 -0
  232. package/dist/types/plugins/collab-edit/ui/to-avatar.d.ts +1 -1
  233. package/dist/types/plugins/extension/ui/Extension/ExtensionComponent.d.ts +2 -2
  234. package/dist/types/plugins/floating-toolbar/ui/EditorRemoveEmojiIcon.d.ts +1 -0
  235. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/create-items.d.ts +1 -1
  236. package/dist/types/plugins/layout/actions.d.ts +1 -0
  237. package/dist/types/plugins/layout/pm-plugins/types.d.ts +1 -0
  238. package/dist/types/plugins/layout/toolbar-messages.d.ts +5 -0
  239. package/dist/types/plugins/layout/toolbar.d.ts +1 -1
  240. package/dist/types/plugins/layout/types.d.ts +2 -1
  241. package/dist/types/plugins/mentions/analytics.d.ts +1 -1
  242. package/dist/types/plugins/quick-insert/index.d.ts +1 -1
  243. package/dist/types/plugins/table/nodeviews/tableCell.d.ts +1 -1
  244. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/resize-state.d.ts +2 -0
  245. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/scale-table.d.ts +1 -0
  246. package/dist/types/plugins/table/transforms/column-width.d.ts +10 -0
  247. package/dist/types/plugins/table/utils/table.d.ts +2 -0
  248. package/dist/types/ui/ConfigPanel/Fields/Expand.d.ts +1 -1
  249. package/package.json +22 -22
  250. package/dist/types/plugins/floating-toolbar/ui/EditorHideEmojiIcon.d.ts +0 -1
@@ -8,6 +8,11 @@ exports.toolbarMessages = void 0;
8
8
  var _reactIntl = require("react-intl");
9
9
 
10
10
  var toolbarMessages = (0, _reactIntl.defineMessages)({
11
+ singleColumn: {
12
+ id: 'fabric.editor.single',
13
+ defaultMessage: 'Single column',
14
+ description: 'Layout with one single column'
15
+ },
11
16
  twoColumns: {
12
17
  id: 'fabric.editor.twoColumns',
13
18
  defaultMessage: 'Two columns',
@@ -11,6 +11,8 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
11
11
 
12
12
  var _prosemirrorUtils = require("prosemirror-utils");
13
13
 
14
+ var _layoutSingle = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/layout-single"));
15
+
14
16
  var _layoutTwoEqual = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/layout-two-equal"));
15
17
 
16
18
  var _layoutThreeEqual = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/layout-three-equal"));
@@ -42,6 +44,12 @@ var LAYOUT_TYPES = [{
42
44
  title: _toolbarMessages.toolbarMessages.threeColumns,
43
45
  icon: _layoutThreeEqual.default
44
46
  }];
47
+ var LAYOUT_TYPES_WITH_SINGLE_COL = [{
48
+ id: 'editor.layout.singeLayout',
49
+ type: 'single',
50
+ title: _toolbarMessages.toolbarMessages.singleColumn,
51
+ icon: _layoutSingle.default
52
+ }].concat(LAYOUT_TYPES);
45
53
  var SIDEBAR_LAYOUT_TYPES = [{
46
54
  id: 'editor.layout.twoRightSidebar',
47
55
  type: 'two_right_sidebar',
@@ -74,7 +82,7 @@ var buildLayoutButton = function buildLayoutButton(intl, item, currentLayout) {
74
82
  var layoutToolbarTitle = 'Layout floating controls';
75
83
  exports.layoutToolbarTitle = layoutToolbarTitle;
76
84
 
77
- var buildToolbar = function buildToolbar(state, intl, pos, _allowBreakout, addSidebarLayouts) {
85
+ var buildToolbar = function buildToolbar(state, intl, pos, _allowBreakout, addSidebarLayouts, allowSingleColumnLayout) {
78
86
  var node = state.doc.nodeAt(pos);
79
87
 
80
88
  if (node) {
@@ -96,13 +104,14 @@ var buildToolbar = function buildToolbar(state, intl, pos, _allowBreakout, addSi
96
104
  onFocus: (0, _decoration.hoverDecoration)(nodeType, true),
97
105
  onBlur: (0, _decoration.hoverDecoration)(nodeType, false)
98
106
  };
107
+ var layoutTypes = allowSingleColumnLayout ? LAYOUT_TYPES_WITH_SINGLE_COL : LAYOUT_TYPES;
99
108
  return {
100
109
  title: layoutToolbarTitle,
101
110
  getDomRef: function getDomRef(view) {
102
111
  return (0, _prosemirrorUtils.findDomRefAtPos)(pos, view.domAtPos.bind(view));
103
112
  },
104
113
  nodeType: nodeType,
105
- items: [].concat((0, _toConsumableArray2.default)(LAYOUT_TYPES.map(function (i) {
114
+ items: [].concat((0, _toConsumableArray2.default)(layoutTypes.map(function (i) {
106
115
  return buildLayoutButton(intl, i, currentLayout);
107
116
  })), (0, _toConsumableArray2.default)(addSidebarLayouts ? SIDEBAR_LAYOUT_TYPES.map(function (i) {
108
117
  return buildLayoutButton(intl, i, currentLayout);
@@ -15,16 +15,12 @@ var _prosemirrorView = require("prosemirror-view");
15
15
 
16
16
  var _prosemirrorUtils = require("prosemirror-utils");
17
17
 
18
- var _analytics = require("../../analytics");
19
-
20
18
  var _selection = require("../utils/selection");
21
19
 
22
20
  var _node = require("../utils/node");
23
21
 
24
22
  var _pluginStateFactory = require("../../../utils/plugin-state-factory");
25
23
 
26
- var _find = require("../utils/find");
27
-
28
24
  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; }
29
25
 
30
26
  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) { (0, _defineProperty2.default)(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; }
@@ -133,40 +129,6 @@ var createPlugin = function createPlugin(eventDispatch) {
133
129
  return new _prosemirrorState.Plugin({
134
130
  state: createPluginState(eventDispatch, createInitialState),
135
131
  key: listPluginKey,
136
- appendTransaction: function appendTransaction(transactions, _oldState, newState) {
137
- var lastTransaction = transactions[transactions.length - 1];
138
-
139
- if (!lastTransaction.docChanged || !lastTransaction.selectionSet) {
140
- return;
141
- }
142
-
143
- var tr = newState.tr;
144
- var rootList = (0, _find.findRootParentListNode)(tr.selection.$from);
145
-
146
- if (!rootList) {
147
- return;
148
- }
149
-
150
- var listsJoined = (0, _node.joinSiblingLists)({
151
- tr: tr,
152
- direction: _node.JoinDirection.RIGHT
153
- });
154
-
155
- if (tr.docChanged) {
156
- var orderedListsJoined = listsJoined.orderedList,
157
- bulletListsJoined = listsJoined.bulletList;
158
- (0, _analytics.addAnalytics)(newState, tr, {
159
- action: _analytics.ACTION.FIXED,
160
- actionSubject: _analytics.ACTION_SUBJECT.LIST,
161
- eventType: _analytics.EVENT_TYPE.TRACK,
162
- attributes: {
163
- orderedListsJoined: orderedListsJoined,
164
- bulletListsJoined: bulletListsJoined
165
- }
166
- });
167
- return tr;
168
- }
169
- },
170
132
  props: {
171
133
  decorations: function decorations(state) {
172
134
  var _getPluginState = getPluginState(state),
@@ -102,7 +102,7 @@ var buildTypeAheadInviteItemViewedPayload = function buildTypeAheadInviteItemVie
102
102
 
103
103
  exports.buildTypeAheadInviteItemViewedPayload = buildTypeAheadInviteItemViewedPayload;
104
104
 
105
- var buildTypeAheadInviteExposurePayload = function buildTypeAheadInviteExposurePayload(shouldEnableInvite, sessionId, contextIdentifierProvider, inviteExperimentCohort, userRole) {
105
+ var buildTypeAheadInviteExposurePayload = function buildTypeAheadInviteExposurePayload(sessionId, contextIdentifierProvider, inviteExperimentCohort, userRole) {
106
106
  var _ref2 = contextIdentifierProvider || {},
107
107
  containerId = _ref2.containerId,
108
108
  objectId = _ref2.objectId,
@@ -110,8 +110,7 @@ var buildTypeAheadInviteExposurePayload = function buildTypeAheadInviteExposureP
110
110
 
111
111
  return buildAnalyticsPayload('feature', 'exposed', _analyticsGasTypes.OPERATIONAL_EVENT_TYPE, sessionId, {
112
112
  flagKey: 'confluence.frontend.invite.from.mention',
113
- value: shouldEnableInvite,
114
- cohort: inviteExperimentCohort,
113
+ value: inviteExperimentCohort || 'not-enrolled',
115
114
  containerId: containerId,
116
115
  objectId: objectId,
117
116
  childObjectId: childObjectId,
@@ -292,6 +292,13 @@ var createTypeAheadConfig = function createTypeAheadConfig(_ref6) {
292
292
 
293
293
  if (mentions.length === 0 && firstQueryWithoutResults === null) {
294
294
  firstQueryWithoutResults = query;
295
+ } // Growth (El-dorado) experiment design hard requirement
296
+
297
+
298
+ if (mentionItems.length <= 2) {
299
+ var inviteExperimentCohort = mentionProvider.inviteExperimentCohort,
300
+ userRole = mentionProvider.userRole;
301
+ fireEvent((0, _analytics.buildTypeAheadInviteExposurePayload)(sessionId, contextIdentifierProvider, inviteExperimentCohort, userRole));
295
302
  }
296
303
 
297
304
  if (!mentionProvider.shouldEnableInvite || mentionItems.length > 2) {
@@ -317,18 +324,6 @@ var createTypeAheadConfig = function createTypeAheadConfig(_ref6) {
317
324
  },
318
325
  onOpen: function onOpen(editorState) {
319
326
  firstQueryWithoutResults = null;
320
- var pluginState = (0, _utils2.getMentionPluginState)(editorState);
321
-
322
- if (!pluginState || !pluginState.mentionProvider) {
323
- return null;
324
- }
325
-
326
- var contextIdentifierProvider = pluginState.contextIdentifierProvider,
327
- _pluginState$mentionP = pluginState.mentionProvider,
328
- shouldEnableInvite = _pluginState$mentionP.shouldEnableInvite,
329
- inviteExperimentCohort = _pluginState$mentionP.inviteExperimentCohort,
330
- userRole = _pluginState$mentionP.userRole;
331
- fireEvent((0, _analytics.buildTypeAheadInviteExposurePayload)(!!shouldEnableInvite, sessionId, contextIdentifierProvider, inviteExperimentCohort, userRole));
332
327
  },
333
328
  selectItem: function selectItem(state, item, insert, _ref8) {
334
329
  var mode = _ref8.mode,
@@ -35,7 +35,8 @@ var _editorCommon = require("@atlaskit/editor-common");
35
35
 
36
36
  var _utils = require("../utils");
37
37
 
38
- var fitToHeight = 20;
38
+ var _consts = require("@atlaskit/editor-shared-styles/consts");
39
+
39
40
  var panelIcons = {
40
41
  info: _info.default,
41
42
  success: _success.default,
@@ -60,7 +61,7 @@ var PanelIcon = function PanelIcon(props) {
60
61
  shortName: panelIcon,
61
62
  showTooltip: false,
62
63
  allowTextFallback: false,
63
- fitToHeight: fitToHeight
64
+ fitToHeight: _consts.akEditorCustomIconSize
64
65
  });
65
66
  }
66
67
 
@@ -91,7 +92,10 @@ var PanelNodeView = /*#__PURE__*/function () {
91
92
 
92
93
  if (!this.icon) {
93
94
  return;
94
- }
95
+ } // set contentEditable as false to be able to select the custom panels with keyboard
96
+
97
+
98
+ this.icon.contentEditable = 'false';
95
99
 
96
100
  _reactDom.default.render( /*#__PURE__*/_react.default.createElement(PanelIcon, {
97
101
  allowCustomPanel: pluginOptions.UNSAFE_allowCustomPanel,
@@ -21,7 +21,7 @@ var _warning = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/warni
21
21
 
22
22
  var _error = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/error"));
23
23
 
24
- var _EditorHideEmojiIcon = _interopRequireDefault(require("../floating-toolbar/ui/EditorHideEmojiIcon"));
24
+ var _EditorRemoveEmojiIcon = _interopRequireDefault(require("../floating-toolbar/ui/EditorRemoveEmojiIcon"));
25
25
 
26
26
  var _messages = _interopRequireDefault(require("../../messages"));
27
27
 
@@ -247,13 +247,15 @@ var getToolbarItems = function getToolbarItems(formatMessage, panelNodeType, isC
247
247
  return changeEmoji(emojiShortName);
248
248
  }
249
249
  };
250
- items.push(emojiPicker, {
251
- id: 'editor.panel.hideEmoji',
250
+ var removeEmojiButton = {
251
+ id: 'editor.panel.removeEmoji',
252
252
  type: 'button',
253
- icon: _EditorHideEmojiIcon.default,
253
+ icon: _EditorRemoveEmojiIcon.default,
254
254
  onClick: removeEmoji(),
255
- title: formatMessage(_messages.default.hideEmoji)
256
- }, {
255
+ title: formatMessage(_messages.default.removeEmoji),
256
+ disabled: activePanelIcon ? false : true
257
+ };
258
+ items.push(emojiPicker, removeEmojiButton, {
257
259
  type: 'separator'
258
260
  }, colorPicker);
259
261
  }
@@ -100,16 +100,16 @@ describe('getToolbarItems', function () {
100
100
  color: '#ABF5D1'
101
101
  }, true);
102
102
  });
103
- it("should call changePanelType when clicked on hide emoji", function () {
104
- var hideEmojiButton = itemsWithCustomPanelEnabled.find(function (item) {
105
- return item.type === 'button' && item.id === 'editor.panel.hideEmoji';
103
+ it("should call changePanelType when clicked on remove emoji", function () {
104
+ var removeEmojiButton = itemsWithCustomPanelEnabled.find(function (item) {
105
+ return item.type === 'button' && item.id === 'editor.panel.removeEmoji';
106
106
  });
107
- hideEmojiButton.onClick(editorView.state);
107
+ removeEmojiButton.onClick(editorView.state);
108
108
  expect(changePanelTypespy).toBeCalledWith(_adfSchema.PanelType.CUSTOM, {
109
109
  emoji: undefined
110
110
  }, true);
111
111
  });
112
- it("should not call changePanelType when clicked on hide emoji when no emoji in panel", function () {
112
+ it("should not call changePanelType when clicked on remove emoji when no emoji in panel", function () {
113
113
  var _createEditor2 = createEditor({
114
114
  doc: (0, _docBuilder.doc)((0, _docBuilder.panel)({
115
115
  panelType: 'custom'
@@ -120,13 +120,27 @@ describe('getToolbarItems', function () {
120
120
  editorView = _createEditor2.editorView;
121
121
 
122
122
  var toolbarItems = (0, _toolbar.getToolbarItems)(dummyFormatMessage, _schema.default.nodes.panel, true, providerFactory, _adfSchema.PanelType.CUSTOM);
123
- var hideEmojiButton = toolbarItems.find(function (item) {
124
- return item.type === 'button' && item.id === 'editor.panel.hideEmoji';
123
+ var removeEmojiButton = toolbarItems.find(function (item) {
124
+ return item.type === 'button' && item.id === 'editor.panel.removeEmoji';
125
125
  });
126
126
  changePanelTypespy.mockClear();
127
- hideEmojiButton.onClick(editorView.state);
127
+ removeEmojiButton.onClick(editorView.state);
128
128
  expect(changePanelTypespy).not.toBeCalled();
129
129
  });
130
+ it("should have remove emoji button disabled when focus on panel without emoji", function () {
131
+ var toolbarItems = (0, _toolbar.getToolbarItems)(dummyFormatMessage, _schema.default.nodes.panel, true, providerFactory, _adfSchema.PanelType.CUSTOM, '#ABF5D1', '');
132
+ var removeEmojiButton = toolbarItems.find(function (item) {
133
+ return item.type === 'button' && item.id === 'editor.panel.removeEmoji';
134
+ });
135
+ expect(removeEmojiButton.disabled).toBe(true);
136
+ });
137
+ it("should have remove emoji button enabled when focus on panel with emoji", function () {
138
+ var toolbarItems = (0, _toolbar.getToolbarItems)(dummyFormatMessage, _schema.default.nodes.panel, true, providerFactory, _adfSchema.PanelType.CUSTOM, '#ABF5D1', ':smiley:');
139
+ var removeEmojiButton = toolbarItems.find(function (item) {
140
+ return item.type === 'button' && item.id === 'editor.panel.removeEmoji';
141
+ });
142
+ expect(removeEmojiButton.disabled).toBe(false);
143
+ });
130
144
  });
131
145
  describe('analytics for custom panels', function () {
132
146
  var createEditor = (0, _createProsemirrorEditor.createProsemirrorEditorFactory)();
@@ -189,14 +203,14 @@ describe('getToolbarItems', function () {
189
203
  expect(createAnalyticsEvent).toHaveBeenCalledWith(payload);
190
204
  });
191
205
  it('Should trigger analytics when Icon is removed', function () {
192
- var hideEmojiButton = itemsWithCustomPanelEnabled.find(function (item) {
193
- return item.type === 'button' && item.id === 'editor.panel.hideEmoji';
206
+ var removeEmojiButton = itemsWithCustomPanelEnabled.find(function (item) {
207
+ return item.type === 'button' && item.id === 'editor.panel.removeEmoji';
194
208
  });
195
209
  var emojiPickerConfig = itemsWithCustomPanelEnabled.find(function (item) {
196
210
  return item.type === 'select' && item.selectType === 'emoji';
197
211
  });
198
212
  emojiPickerConfig.onChange(':smiley:')(editorView.state, editorView.dispatch);
199
- hideEmojiButton.onClick(editorView.state, editorView.dispatch);
213
+ removeEmojiButton.onClick(editorView.state, editorView.dispatch);
200
214
  var payload = {
201
215
  action: _analytics.ACTION.REMOVE_ICON,
202
216
  actionSubject: _analytics.ACTION_SUBJECT.PANEL,
@@ -21,6 +21,8 @@ var _utils2 = require("../utils");
21
21
 
22
22
  var _getAllowAddColumnCustomStep = require("../utils/get-allow-add-column-custom-step");
23
23
 
24
+ var _columnWidth = require("../transforms/column-width");
25
+
24
26
  // #region Imports
25
27
  // #endregion
26
28
  function addColumnAtCustomStep(column) {
@@ -37,17 +39,30 @@ function addColumnAtCustomStep(column) {
37
39
 
38
40
  function addColumnAt(column) {
39
41
  var allowAddColumnCustomStep = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
42
+ var view = arguments.length > 2 ? arguments[2] : undefined;
43
+ return function (tr) {
44
+ var updatedTr = tr;
40
45
 
41
- if (allowAddColumnCustomStep) {
42
- return addColumnAtCustomStep(column);
43
- }
46
+ if (allowAddColumnCustomStep) {
47
+ updatedTr = addColumnAtCustomStep(column)(updatedTr);
48
+ } else {
49
+ updatedTr = (0, _utils.addColumnAt)(column)(updatedTr);
50
+ }
51
+
52
+ var table = (0, _utils.findTable)(updatedTr.selection);
44
53
 
45
- return (0, _utils.addColumnAt)(column);
54
+ if (table) {
55
+ // [ED-8288] Update colwidths manually to avoid multiple dispatch in TableComponent
56
+ updatedTr = (0, _columnWidth.rescaleColumns)(table, view)(updatedTr);
57
+ }
58
+
59
+ return updatedTr;
60
+ };
46
61
  } // :: (EditorState, dispatch: ?(tr: Transaction)) → bool
47
62
  // Command to add a column before the column with the selection.
48
63
 
49
64
 
50
- var addColumnBefore = function addColumnBefore(state, dispatch) {
65
+ var addColumnBefore = function addColumnBefore(state, dispatch, view) {
51
66
  var table = (0, _utils.findTable)(state.selection);
52
67
 
53
68
  if (!table) {
@@ -56,7 +71,7 @@ var addColumnBefore = function addColumnBefore(state, dispatch) {
56
71
 
57
72
  if (dispatch) {
58
73
  var rect = (0, _utils.selectedRect)(state);
59
- dispatch(addColumnAt(rect.left, (0, _getAllowAddColumnCustomStep.getAllowAddColumnCustomStep)(state))(state.tr));
74
+ dispatch(addColumnAt(rect.left, (0, _getAllowAddColumnCustomStep.getAllowAddColumnCustomStep)(state), view)(state.tr));
60
75
  }
61
76
 
62
77
  return true;
@@ -66,7 +81,7 @@ var addColumnBefore = function addColumnBefore(state, dispatch) {
66
81
 
67
82
  exports.addColumnBefore = addColumnBefore;
68
83
 
69
- var addColumnAfter = function addColumnAfter(state, dispatch) {
84
+ var addColumnAfter = function addColumnAfter(state, dispatch, view) {
70
85
  var table = (0, _utils.findTable)(state.selection);
71
86
 
72
87
  if (!table) {
@@ -75,7 +90,7 @@ var addColumnAfter = function addColumnAfter(state, dispatch) {
75
90
 
76
91
  if (dispatch) {
77
92
  var rect = (0, _utils.selectedRect)(state);
78
- dispatch(addColumnAt(rect.right, (0, _getAllowAddColumnCustomStep.getAllowAddColumnCustomStep)(state))(state.tr));
93
+ dispatch(addColumnAt(rect.right, (0, _getAllowAddColumnCustomStep.getAllowAddColumnCustomStep)(state), view)(state.tr));
79
94
  }
80
95
 
81
96
  return true;
@@ -85,8 +100,8 @@ var addColumnAfter = function addColumnAfter(state, dispatch) {
85
100
  exports.addColumnAfter = addColumnAfter;
86
101
 
87
102
  var insertColumn = function insertColumn(column) {
88
- return function (state, dispatch) {
89
- var tr = addColumnAt(column, (0, _getAllowAddColumnCustomStep.getAllowAddColumnCustomStep)(state))(state.tr);
103
+ return function (state, dispatch, view) {
104
+ var tr = addColumnAt(column, (0, _getAllowAddColumnCustomStep.getAllowAddColumnCustomStep)(state), view)(state.tr);
90
105
  var table = (0, _utils.findTable)(tr.selection);
91
106
 
92
107
  if (!table) {
@@ -131,7 +131,7 @@ var setCellAttr = function setCellAttr(name, value) {
131
131
  exports.setCellAttr = setCellAttr;
132
132
 
133
133
  var triggerUnlessTableHeader = function triggerUnlessTableHeader(command) {
134
- return function (state, dispatch) {
134
+ return function (state, dispatch, view) {
135
135
  var selection = state.selection,
136
136
  tableHeader = state.schema.nodes.tableHeader;
137
137
 
@@ -139,7 +139,7 @@ var triggerUnlessTableHeader = function triggerUnlessTableHeader(command) {
139
139
  var cell = (0, _utils.findCellClosestToPos)(selection.$from);
140
140
 
141
141
  if (cell && cell.node.type !== tableHeader) {
142
- return command(state, dispatch);
142
+ return command(state, dispatch, view);
143
143
  }
144
144
  }
145
145
 
@@ -147,7 +147,7 @@ var triggerUnlessTableHeader = function triggerUnlessTableHeader(command) {
147
147
  var rect = (0, _utils.getSelectionRect)(selection);
148
148
 
149
149
  if (!(0, _nodes.checkIfHeaderRowEnabled)(state) || rect && rect.top > 0) {
150
- return command(state, dispatch);
150
+ return command(state, dispatch, view);
151
151
  }
152
152
  }
153
153
 
@@ -206,16 +206,17 @@ var TableComponent = /*#__PURE__*/function (_React$Component) {
206
206
  var layoutSize = _this.tableNodeLayoutSize(node, containerWidth.width, options);
207
207
 
208
208
  var hasNumberedColumnChanged = prevAttrs.isNumberColumnEnabled !== node.attrs.isNumberColumnEnabled;
209
+ var noOfColumnsChanged = (0, _utils4.tablesHaveDifferentNoOfColumns)(node, prevNode);
209
210
 
210
211
  if ( // Breakout mode/layout changed
211
212
  layoutChanged || // We need to react if our parent changes
212
213
  // Scales the cols widths relative to the new parent width.
213
214
  parentWidthChanged || // Enabling / disabling this feature reduces or adds size to the table.
214
- hasNumberedColumnChanged || // Adding or removing columns from the table, should snap the remaining / new columns to the layout width.
215
- (0, _utils4.tablesHaveDifferentNoOfColumns)(node, prevNode) || // This last check is also to cater for dynamic text sizing changing the 'default' layout width
215
+ hasNumberedColumnChanged || // This last check is also to cater for dynamic text sizing changing the 'default' layout width
216
216
  // Usually happens on window resize.
217
- layoutSize !== _this.layoutSize) {
218
- if (!hasNumberedColumnChanged) {
217
+ layoutSize !== _this.layoutSize || noOfColumnsChanged) {
218
+ // If column has been inserted/deleted avoid multi dispatch
219
+ if (!hasNumberedColumnChanged && !noOfColumnsChanged) {
219
220
  _this.scaleTable({
220
221
  parentWidth: parentWidth,
221
222
  layoutChanged: layoutChanged
@@ -47,16 +47,30 @@ var TableCellNodeView = /*#__PURE__*/function () {
47
47
  }
48
48
 
49
49
  (0, _createClass2.default)(TableCellNodeView, [{
50
- key: "shouldRecreateNodeView",
51
- value: function shouldRecreateNodeView(node) {
50
+ key: "updateNodeView",
51
+ value: function updateNodeView(node) {
52
52
  var _this = this;
53
53
 
54
54
  if (this.node.type !== node.type) {
55
55
  return false;
56
56
  }
57
57
 
58
- var attrs = (0, _adfSchema.setCellAttrs)(this.node);
59
- var nextAttrs = (0, _adfSchema.setCellAttrs)(node); // added + changed attributes
58
+ var attrs = (0, _adfSchema.getCellDomAttrs)(this.node);
59
+ var nextAttrs = (0, _adfSchema.getCellDomAttrs)(node);
60
+
61
+ var _getCellAttrs = (0, _adfSchema.getCellAttrs)(this.dom),
62
+ colspan = _getCellAttrs.colspan,
63
+ rowspan = _getCellAttrs.rowspan; // need to rerender when colspan/rowspan in dom are different from the node attrs
64
+ // this can happen when undoing merge cells
65
+
66
+
67
+ var defaultColspan = 1,
68
+ defaultRowspan = 1;
69
+
70
+ if (colspan !== (node.attrs.colspan || defaultColspan) || rowspan !== (node.attrs.rowspan || defaultRowspan)) {
71
+ return false;
72
+ } // added + changed attributes
73
+
60
74
 
61
75
  var addedAttrs = Object.entries(nextAttrs).filter(function (_ref2) {
62
76
  var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
@@ -93,9 +107,9 @@ var TableCellNodeView = /*#__PURE__*/function () {
93
107
  }, {
94
108
  key: "update",
95
109
  value: function update(node) {
96
- var shouldUpdate = this.shouldRecreateNodeView(node);
110
+ var didUpdate = this.updateNodeView(node);
97
111
  this.node = node;
98
- return shouldUpdate;
112
+ return didUpdate;
99
113
  }
100
114
  }, {
101
115
  key: "destroy",
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.getNewResizeStateFromSelectedColumns = exports.areColumnsEven = exports.bulkColumnsResize = exports.evenSelectedColumnsWidths = exports.evenAllColumnsWidths = exports.adjustColumnsWidths = exports.getTotalWidth = exports.updateColgroup = exports.getResizeState = void 0;
8
+ exports.getNewResizeStateFromSelectedColumns = exports.normaliseTableLayout = exports.areColumnsEven = exports.bulkColumnsResize = exports.evenSelectedColumnsWidths = exports.evenAllColumnsWidths = exports.adjustColumnsWidths = exports.getTotalWidth = exports.updateColgroup = exports.getResizeState = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
@@ -300,6 +300,8 @@ var normaliseTableLayout = function normaliseTableLayout(input) {
300
300
  }
301
301
  };
302
302
 
303
+ exports.normaliseTableLayout = normaliseTableLayout;
304
+
303
305
  var getNewResizeStateFromSelectedColumns = function getNewResizeStateFromSelectedColumns(rect, state, domAtPos, dynamicTextSizing) {
304
306
  var _getSelectedTableInfo = (0, _utils.getSelectedTableInfo)(state.selection),
305
307
  totalRowCount = _getSelectedTableInfo.totalRowCount,
@@ -5,6 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.scaleTableTo = scaleTableTo;
8
9
  exports.scaleWithParent = exports.scale = void 0;
9
10
 
10
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -133,12 +133,12 @@ var getToolbarCellOptionsConfig = function getToolbarCellOptionsConfig(editorSta
133
133
  var options = [{
134
134
  id: 'editor.table.insertColumn',
135
135
  title: formatMessage(_messages2.default.insertColumn),
136
- onClick: function onClick(state, dispatch) {
136
+ onClick: function onClick(state, dispatch, view) {
137
137
  var selectionRect = getClosestSelectionRect(state);
138
138
  var index = selectionRect === null || selectionRect === void 0 ? void 0 : selectionRect.right;
139
139
 
140
140
  if (index) {
141
- (0, _commandsWithAnalytics.insertColumnWithAnalytics)(_analytics.INPUT_METHOD.FLOATING_TB, index)(state, dispatch);
141
+ (0, _commandsWithAnalytics.insertColumnWithAnalytics)(_analytics.INPUT_METHOD.FLOATING_TB, index)(state, dispatch, view);
142
142
  }
143
143
 
144
144
  return true;
@@ -168,11 +168,11 @@ var getToolbarCellOptionsConfig = function getToolbarCellOptionsConfig(editorSta
168
168
  title: formatMessage(_messages2.default.removeColumns, {
169
169
  0: numberOfColumns
170
170
  }),
171
- onClick: function onClick(state, dispatch) {
171
+ onClick: function onClick(state, dispatch, view) {
172
172
  var selectionRect = getClosestSelectionRect(state);
173
173
 
174
174
  if (selectionRect) {
175
- (0, _commandsWithAnalytics.deleteColumnsWithAnalytics)(_analytics.INPUT_METHOD.FLOATING_TB, selectionRect)(state, dispatch);
175
+ (0, _commandsWithAnalytics.deleteColumnsWithAnalytics)(_analytics.INPUT_METHOD.FLOATING_TB, selectionRect)(state, dispatch, view);
176
176
  }
177
177
 
178
178
  return true;
@@ -5,14 +5,24 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.updateColumnWidths = void 0;
8
+ exports.rescaleColumns = exports.updateColumnWidths = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
12
  var _tableMap = require("@atlaskit/editor-tables/table-map");
13
13
 
14
+ var _utils = require("../pm-plugins/table-resizing/utils");
15
+
14
16
  var _metadata = require("./metadata");
15
17
 
18
+ var _resizeState = require("../pm-plugins/table-resizing/utils/resize-state");
19
+
20
+ var _misc = require("../pm-plugins/table-resizing/utils/misc");
21
+
22
+ var _editorCommon = require("@atlaskit/editor-common");
23
+
24
+ var _scaleTable = require("../pm-plugins/table-resizing/utils/scale-table");
25
+
16
26
  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; }
17
27
 
18
28
  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) { (0, _defineProperty2.default)(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; }
@@ -105,21 +115,71 @@ var updateColumnWidths = function updateColumnWidths(resizeState, table, start)
105
115
  }
106
116
 
107
117
  var tablePos = start - 1;
108
- var _tr = tr,
109
- selection = _tr.selection;
110
- /* Create a mapping before the table node is replaced to allow the current
111
- * selection to be mapped back to it's original position inside the table.
118
+ var selectionBookmark = tr.selection.getBookmark();
119
+ tr.replaceWith(tablePos, tablePos + table.nodeSize, table.type.createChecked(table.attrs, rows, table.marks));
120
+ /**
121
+ * We want to restore to the original selection but w/o applying the mapping. Function
122
+ * tr.replaceWith puts the selection after the inserted content. We need to manually
123
+ * set the selection back to original state. Mapping in this case doesn't quite work
124
+ * e.g. if we change the content before a selection. This is because mapping
125
+ * means moving it if the content in front of it changed. Instead we can get
126
+ * bookmark of selection.
112
127
  *
113
- * If the mapping from the new 'replaceWith' transaction is used, prosemirror
114
- * will map the selection to after the table as it thinks the original table
115
- * node has been deleted.
128
+ * @see https://github.com/ProseMirror/prosemirror/issues/645
116
129
  */
117
130
 
118
- var originalMap = Object.assign(Object.create(Object.getPrototypeOf(tr.mapping)), tr.mapping);
119
- tr.replaceWith(tablePos, tablePos + table.nodeSize, table.type.createChecked(table.attrs, rows, table.marks)); // restore selection after replacing the table
131
+ return tr.setSelection(selectionBookmark.resolve(tr.doc));
132
+ };
133
+ };
134
+ /**
135
+ * This function is called when user inserts/deletes a column in a table to rescale all columns.
136
+ * This is done manually to avoid a multi-dispatch in TableComponent. See [ED-8288].
137
+ * @param table
138
+ * @param view
139
+ * @returns Updated transaction with rescaled columns for a given table
140
+ */
141
+
142
+
143
+ exports.updateColumnWidths = updateColumnWidths;
144
+
145
+ var rescaleColumns = function rescaleColumns(table, view) {
146
+ return function (tr) {
147
+ if (!view || !(0, _utils.hasTableBeenResized)(table.node)) {
148
+ return tr;
149
+ }
150
+
151
+ var state = view.state;
152
+ var domAtPos = view.domAtPos.bind(view);
153
+ var maybeTable = domAtPos(table.start).node;
154
+ var tableRef = maybeTable.closest('table');
155
+
156
+ if (!tableRef) {
157
+ return tr;
158
+ }
159
+
160
+ var layout = (0, _resizeState.normaliseTableLayout)(tableRef === null || tableRef === void 0 ? void 0 : tableRef.dataset.layout);
161
+ var maxSize = (0, _misc.getTableMaxWidth)({
162
+ table: table.node,
163
+ tableStart: table.start,
164
+ state: state,
165
+ layout: layout,
166
+ dynamicTextSizing: true
167
+ });
168
+ var resizeState = (0, _resizeState.getResizeState)({
169
+ minWidth: _editorCommon.tableCellMinWidth,
170
+ table: table.node,
171
+ start: table.start,
172
+ tableRef: tableRef,
173
+ domAtPos: domAtPos,
174
+ maxSize: maxSize
175
+ });
176
+
177
+ if (resizeState.overflow) {
178
+ resizeState = (0, _scaleTable.scaleTableTo)(resizeState, maxSize);
179
+ }
120
180
 
121
- return tr.setSelection(selection.map(tr.doc, originalMap));
181
+ return updateColumnWidths(resizeState, table.node, table.start)(tr);
122
182
  };
123
183
  };
124
184
 
125
- exports.updateColumnWidths = updateColumnWidths;
185
+ exports.rescaleColumns = rescaleColumns;