@atlaskit/editor-plugin-table 5.4.11 → 5.4.13

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 (49) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cjs/plugins/table/event-handlers.js +10 -4
  3. package/dist/cjs/plugins/table/toolbar.js +3 -6
  4. package/dist/cjs/plugins/table/ui/ColumnResizeWidget/index.js +3 -6
  5. package/dist/cjs/plugins/table/ui/DragHandle/index.js +12 -6
  6. package/dist/cjs/plugins/table/ui/DragPreview/index.js +2 -0
  7. package/dist/cjs/plugins/table/ui/FloatingContextualButton/index.js +7 -10
  8. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +10 -11
  9. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/index.js +3 -6
  10. package/dist/cjs/plugins/table/ui/FloatingDragMenu/DragMenu.js +4 -7
  11. package/dist/cjs/plugins/table/ui/TableFloatingColumnControls/index.js +1 -4
  12. package/dist/cjs/plugins/table/utils/column-controls.js +63 -1
  13. package/dist/cjs/plugins/table/utils/index.js +12 -0
  14. package/dist/es2019/plugins/table/event-handlers.js +11 -5
  15. package/dist/es2019/plugins/table/toolbar.js +3 -5
  16. package/dist/es2019/plugins/table/ui/ColumnResizeWidget/index.js +3 -5
  17. package/dist/es2019/plugins/table/ui/DragHandle/index.js +11 -4
  18. package/dist/es2019/plugins/table/ui/DragPreview/index.js +2 -0
  19. package/dist/es2019/plugins/table/ui/FloatingContextualButton/index.js +7 -9
  20. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +9 -11
  21. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/index.js +3 -5
  22. package/dist/es2019/plugins/table/ui/FloatingDragMenu/DragMenu.js +4 -6
  23. package/dist/es2019/plugins/table/ui/TableFloatingColumnControls/index.js +1 -4
  24. package/dist/es2019/plugins/table/utils/column-controls.js +62 -0
  25. package/dist/es2019/plugins/table/utils/index.js +1 -1
  26. package/dist/esm/plugins/table/event-handlers.js +11 -5
  27. package/dist/esm/plugins/table/toolbar.js +3 -5
  28. package/dist/esm/plugins/table/ui/ColumnResizeWidget/index.js +3 -5
  29. package/dist/esm/plugins/table/ui/DragHandle/index.js +11 -5
  30. package/dist/esm/plugins/table/ui/DragPreview/index.js +2 -0
  31. package/dist/esm/plugins/table/ui/FloatingContextualButton/index.js +7 -9
  32. package/dist/esm/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +9 -11
  33. package/dist/esm/plugins/table/ui/FloatingContextualMenu/index.js +3 -5
  34. package/dist/esm/plugins/table/ui/FloatingDragMenu/DragMenu.js +4 -6
  35. package/dist/esm/plugins/table/ui/TableFloatingColumnControls/index.js +1 -4
  36. package/dist/esm/plugins/table/utils/column-controls.js +62 -0
  37. package/dist/esm/plugins/table/utils/index.js +1 -1
  38. package/dist/types/plugins/table/utils/column-controls.d.ts +3 -0
  39. package/dist/types/plugins/table/utils/index.d.ts +1 -1
  40. package/dist/types-ts4.5/plugins/table/utils/column-controls.d.ts +3 -0
  41. package/dist/types-ts4.5/plugins/table/utils/index.d.ts +1 -1
  42. package/package.json +4 -4
  43. package/src/__tests__/unit/utils/column-controls.ts +145 -1
  44. package/src/plugins/table/event-handlers.ts +22 -4
  45. package/src/plugins/table/ui/DragHandle/index.tsx +30 -21
  46. package/src/plugins/table/ui/TableFloatingColumnControls/index.tsx +1 -5
  47. package/src/plugins/table/utils/column-controls.ts +81 -0
  48. package/src/plugins/table/utils/index.ts +2 -0
  49. package/src/__tests__/integration/block-node-selection.ts +0 -165
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @atlaskit/editor-plugin-table
2
2
 
3
+ ## 5.4.13
4
+
5
+ ### Patch Changes
6
+
7
+ - [#58379](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/58379) [`985c068738e8`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/985c068738e8) - [ux] Add a util to convert cell index into actula colIndex to fix column drag handle position.
8
+ - Updated dependencies
9
+
10
+ ## 5.4.12
11
+
12
+ ### Patch Changes
13
+
14
+ - [#58717](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/58717) [`d65ee171dc89`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/d65ee171dc89) - Return focus to editor when a mouse up event on drag handle is called - this allows copying of table selection to still work
15
+ - [#58763](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/58763) [`0fdbd64522bf`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/0fdbd64522bf) - update ADF schema
16
+ - Updated dependencies
17
+
3
18
  ## 5.4.11
4
19
 
5
20
  ### Patch Changes
@@ -348,13 +348,19 @@ var trackCellLocation = function trackCellLocation(view, mouseEvent) {
348
348
  if (!maybeTableCell || !tableRef) {
349
349
  return;
350
350
  }
351
- var colIndex = maybeTableCell.cellIndex;
351
+ var htmlColIndex = maybeTableCell.cellIndex;
352
352
  var rowElement = (0, _utils.closestElement)(target, 'tr');
353
- var rowIndex = rowElement && rowElement.rowIndex;
353
+ var htmlRowIndex = rowElement && rowElement.rowIndex;
354
354
  var colHeight = tableRef.offsetHeight;
355
355
  var colWidth = maybeTableCell.offsetWidth;
356
- if (hoveredCell.colIndex !== colIndex || hoveredCell.rowIndex !== rowIndex || hoveredCell.colWidth !== colWidth || hoveredCell.colHeight !== colHeight) {
357
- (0, _commands.hoverCell)(rowIndex, colIndex, colWidth, colHeight)(view.state, view.dispatch);
356
+ var tableMap = tableNode && _tableMap.TableMap.get(tableNode);
357
+ var colIndex = htmlColIndex;
358
+ if (tableMap) {
359
+ var convertedColIndex = (0, _utils3.convertHTMLCellIndexToColumnIndex)(htmlColIndex, htmlRowIndex, tableMap);
360
+ colIndex = (0, _utils3.getColumnIndexMappedToColumnIndexInFirstRow)(convertedColIndex, htmlRowIndex, tableMap);
361
+ }
362
+ if (hoveredCell.colIndex !== colIndex || hoveredCell.rowIndex !== htmlRowIndex || hoveredCell.colWidth !== colWidth || hoveredCell.colHeight !== colHeight) {
363
+ (0, _commands.hoverCell)(htmlRowIndex, colIndex, colWidth, colHeight)(view.state, view.dispatch);
358
364
  }
359
365
  };
360
366
  var withCellTracking = exports.withCellTracking = function withCellTracking(eventHandler, elementContentRects) {
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.getToolbarMenuConfig = exports.getToolbarConfig = exports.getToolbarCellOptionsConfig = exports.getClosestSelectionRect = void 0;
9
- var _react = require("@emotion/react");
10
9
  var _customSteps = require("@atlaskit/custom-steps");
11
10
  var _analytics = require("@atlaskit/editor-common/analytics");
12
11
  var _keymaps = require("@atlaskit/editor-common/keymaps");
@@ -30,8 +29,6 @@ var _types = require("./types");
30
29
  var _utils4 = require("./utils");
31
30
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
32
31
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
- /** @jsx jsx */
34
-
35
32
  var getToolbarMenuConfig = exports.getToolbarMenuConfig = function getToolbarMenuConfig(config, state, _ref, editorAnalyticsAPI) {
36
33
  var formatMessage = _ref.formatMessage;
37
34
  var options = [{
@@ -98,7 +95,7 @@ var getToolbarCellOptionsConfig = exports.getToolbarCellOptionsConfig = function
98
95
  },
99
96
  selected: false,
100
97
  disabled: false,
101
- elemAfter: (0, _react.jsx)("div", {
98
+ elemAfter: /*#__PURE__*/React.createElement("div", {
102
99
  css: _shortcut.shortcutStyle
103
100
  }, (0, _keymaps.tooltip)(_keymaps.addColumnAfter))
104
101
  }, {
@@ -117,7 +114,7 @@ var getToolbarCellOptionsConfig = exports.getToolbarCellOptionsConfig = function
117
114
  },
118
115
  selected: false,
119
116
  disabled: false,
120
- elemAfter: (0, _react.jsx)("div", {
117
+ elemAfter: /*#__PURE__*/React.createElement("div", {
121
118
  css: _shortcut.shortcutStyle
122
119
  }, (0, _keymaps.tooltip)(_keymaps.addRowAfter))
123
120
  }, {
@@ -249,7 +246,7 @@ var getToolbarCellOptionsConfig = exports.getToolbarCellOptionsConfig = function
249
246
  },
250
247
  selected: false,
251
248
  disabled: false,
252
- elemAfter: (0, _react.jsx)("div", {
249
+ elemAfter: /*#__PURE__*/React.createElement("div", {
253
250
  css: _shortcut.shortcutStyle
254
251
  }, (0, _keymaps.tooltip)(_keymaps.backspace))
255
252
  });
@@ -7,13 +7,10 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.ColumnResizeWidget = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _react = _interopRequireDefault(require("react"));
10
- var _react2 = require("@emotion/react");
11
10
  var _reactIntlNext = require("react-intl-next");
12
11
  var _messages = require("@atlaskit/editor-common/messages");
13
12
  var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
14
13
  var _types = require("../../types");
15
- /** @jsx jsx */
16
-
17
14
  var ColumnResizeWidget = exports.ColumnResizeWidget = function ColumnResizeWidget(_ref) {
18
15
  var startIndex = _ref.startIndex,
19
16
  endIndex = _ref.endIndex,
@@ -21,20 +18,20 @@ var ColumnResizeWidget = exports.ColumnResizeWidget = function ColumnResizeWidge
21
18
  var _useIntl = (0, _reactIntlNext.useIntl)(),
22
19
  formatMessage = _useIntl.formatMessage;
23
20
  if (!includeTooltip) {
24
- return (0, _react2.jsx)("div", {
21
+ return /*#__PURE__*/_react.default.createElement("div", {
25
22
  className: _types.TableCssClassName.RESIZE_HANDLE_DECORATION,
26
23
  "data-start-index": startIndex,
27
24
  "data-end-index": endIndex
28
25
  });
29
26
  }
30
- return (0, _react2.jsx)(_tooltip.default, {
27
+ return /*#__PURE__*/_react.default.createElement(_tooltip.default, {
31
28
  content: formatMessage(_messages.tableMessages.adjustColumns),
32
29
  hideTooltipOnClick: true,
33
30
  hideTooltipOnMouseDown: true,
34
31
  position: "mouse",
35
32
  mousePosition: "auto-start"
36
33
  }, function (tooltipProps) {
37
- return (0, _react2.jsx)("div", (0, _extends2.default)({
34
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
38
35
  className: _types.TableCssClassName.RESIZE_HANDLE_DECORATION,
39
36
  "data-start-index": startIndex,
40
37
  "data-end-index": endIndex
@@ -6,9 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.DragHandle = void 0;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
11
  var _react = _interopRequireWildcard(require("react"));
11
- var _classnames = _interopRequireDefault(require("classnames"));
12
+ var _classnames2 = _interopRequireDefault(require("classnames"));
12
13
  var _reactDom = _interopRequireDefault(require("react-dom"));
13
14
  var _element = require("@atlaskit/pragmatic-drag-and-drop/adapter/element");
14
15
  var _setCustomNativeDragPreview = require("@atlaskit/pragmatic-drag-and-drop/util/set-custom-native-drag-preview");
@@ -31,7 +32,7 @@ var DragHandle = exports.DragHandle = function DragHandle(_ref) {
31
32
  previewHeight = _ref.previewHeight,
32
33
  onMouseOver = _ref.onMouseOver,
33
34
  onMouseOut = _ref.onMouseOut,
34
- onMouseUp = _ref.onMouseUp,
35
+ _onMouseUp = _ref.onMouseUp,
35
36
  onClick = _ref.onClick,
36
37
  editorView = _ref.editorView;
37
38
  var dragHandleDivRef = (0, _react.useRef)(null);
@@ -112,8 +113,8 @@ var DragHandle = exports.DragHandle = function DragHandle(_ref) {
112
113
  });
113
114
  }
114
115
  }, [tableLocalId, direction, indexes, editorView.state.selection, hasMergedCells]);
115
- return /*#__PURE__*/_react.default.createElement("button", {
116
- className: (0, _classnames.default)(_types.TableCssClassName.DRAG_HANDLE_BUTTON_CONTAINER, appearance, isDragAndDropEnabled && hasMergedCells && _types.TableCssClassName.DRAG_HANDLE_DISABLED),
116
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("button", {
117
+ className: (0, _classnames2.default)(_types.TableCssClassName.DRAG_HANDLE_BUTTON_CONTAINER, _types.TableCssClassName.CONTROLS_BUTTON, appearance, (0, _defineProperty2.default)({}, _types.TableCssClassName.DRAG_HANDLE_DISABLED, isDragAndDropEnabled && hasMergedCells)),
117
118
  ref: dragHandleDivRef,
118
119
  style: {
119
120
  transform: direction === 'column' ? 'none' : 'rotate(90deg)',
@@ -122,9 +123,14 @@ var DragHandle = exports.DragHandle = function DragHandle(_ref) {
122
123
  "data-testid": "table-floating-column-controls-drag-handle",
123
124
  onMouseOver: onMouseOver,
124
125
  onMouseOut: onMouseOut,
125
- onMouseUp: onMouseUp,
126
+ onMouseUp: function onMouseUp(e) {
127
+ // return focus to editor so copying table selections whilst still works, i cannot call e.preventDefault in a mousemove event as this stops dragstart events from firing
128
+ // -> this is bad for a11y but is the current standard new copy/paste keyboard shortcuts should be introduced instead
129
+ editorView.focus();
130
+ _onMouseUp && _onMouseUp(e);
131
+ },
126
132
  onClick: onClick
127
- }, /*#__PURE__*/_react.default.createElement(_HandleIconComponent.HandleIconComponent, handleIconProps), previewContainer && previewWidth !== undefined && previewHeight !== undefined && /*#__PURE__*/_reactDom.default.createPortal( /*#__PURE__*/_react.default.createElement(_DragPreview.DragPreview, {
133
+ }, /*#__PURE__*/_react.default.createElement(_HandleIconComponent.HandleIconComponent, handleIconProps)), previewContainer && previewWidth !== undefined && previewHeight !== undefined && /*#__PURE__*/_reactDom.default.createPortal( /*#__PURE__*/_react.default.createElement(_DragPreview.DragPreview, {
128
134
  direction: direction,
129
135
  width: previewWidth,
130
136
  height: previewHeight
@@ -1,3 +1,4 @@
1
+ /* index.tsx generated by @compiled/babel-plugin v0.26.1 */
1
2
  "use strict";
2
3
 
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -5,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.DragPreview = void 0;
9
+ var _runtime = require("@compiled/react/runtime");
8
10
  var _react = _interopRequireDefault(require("react"));
9
11
  var _primitives = require("@atlaskit/primitives");
10
12
  var _DragInMotionIcon = require("../icons/DragInMotionIcon");
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = _default;
8
8
  var _react = _interopRequireDefault(require("react"));
9
- var _react2 = require("@emotion/react");
10
9
  var _reactIntlNext = require("react-intl-next");
11
10
  var _analytics = require("@atlaskit/editor-common/analytics");
12
11
  var _errorBoundary = require("@atlaskit/editor-common/error-boundary");
@@ -20,8 +19,6 @@ var _commands = require("../../commands");
20
19
  var _types = require("../../types");
21
20
  var _FixedButton = _interopRequireDefault(require("./FixedButton"));
22
21
  var _styles = require("./styles");
23
- /** @jsx jsx */
24
-
25
22
  var BUTTON_OFFSET = 3;
26
23
  var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (props) {
27
24
  var editorView = props.editorView,
@@ -52,7 +49,7 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
52
49
  return null;
53
50
  }
54
51
  var labelCellOptions = formatMessage(_messages.tableMessages.cellOptions);
55
- var button = (0, _react2.jsx)("div", {
52
+ var button = /*#__PURE__*/_react.default.createElement("div", {
56
53
  css: function css(theme) {
57
54
  return [(0, _styles.tableFloatingCellButtonStyles)({
58
55
  theme: theme
@@ -60,19 +57,19 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
60
57
  theme: theme
61
58
  })];
62
59
  }
63
- }, (0, _react2.jsx)(_uiMenu.ToolbarButton, {
60
+ }, /*#__PURE__*/_react.default.createElement(_uiMenu.ToolbarButton, {
64
61
  className: _types.TableCssClassName.CONTEXTUAL_MENU_BUTTON,
65
62
  selected: isContextualMenuOpen,
66
63
  title: labelCellOptions,
67
64
  onClick: handleClick,
68
- iconBefore: (0, _react2.jsx)(_chevronDown.default, {
65
+ iconBefore: /*#__PURE__*/_react.default.createElement(_chevronDown.default, {
69
66
  label: ""
70
67
  }),
71
68
  "aria-label": labelCellOptions
72
69
  }));
73
70
  var parentSticky = targetCellRef.parentElement && targetCellRef.parentElement.className.indexOf('sticky') > -1;
74
71
  if (stickyHeader && parentSticky && tableWrapper) {
75
- return (0, _react2.jsx)(_FixedButton.default, {
72
+ return /*#__PURE__*/_react.default.createElement(_FixedButton.default, {
76
73
  offset: BUTTON_OFFSET,
77
74
  stickyHeader: stickyHeader,
78
75
  tableWrapper: tableWrapper,
@@ -82,7 +79,7 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
82
79
  isContextualMenuOpen: isContextualMenuOpen
83
80
  }, button);
84
81
  }
85
- return (0, _react2.jsx)(_ui.Popup, {
82
+ return /*#__PURE__*/_react.default.createElement(_ui.Popup, {
86
83
  alignX: "right",
87
84
  alignY: "start",
88
85
  target: targetCellRef,
@@ -97,9 +94,9 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
97
94
  });
98
95
  var FloatingContextualButton = (0, _reactIntlNext.injectIntl)(FloatingContextualButtonInner);
99
96
  function _default(props) {
100
- return (0, _react2.jsx)(_errorBoundary.ErrorBoundary, {
97
+ return /*#__PURE__*/_react.default.createElement(_errorBoundary.ErrorBoundary, {
101
98
  component: _analytics.ACTION_SUBJECT.FLOATING_CONTEXTUAL_BUTTON,
102
99
  dispatchAnalyticsEvent: props.dispatchAnalyticsEvent,
103
100
  fallbackComponent: null
104
- }, (0, _react2.jsx)(FloatingContextualButton, props));
101
+ }, /*#__PURE__*/_react.default.createElement(FloatingContextualButton, props));
105
102
  }
@@ -13,7 +13,6 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
13
13
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
15
  var _react = require("react");
16
- var _react2 = require("@emotion/react");
17
16
  var _reactIntlNext = require("react-intl-next");
18
17
  var _customSteps = require("@atlaskit/custom-steps");
19
18
  var _analytics = require("@atlaskit/editor-common/analytics");
@@ -38,7 +37,7 @@ var _styles2 = require("./styles");
38
37
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
39
38
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
40
39
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
41
- 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; } } /** @jsx jsx */
40
+ 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; } }
42
41
  var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component) {
43
42
  (0, _inherits2.default)(ContextualMenu, _Component);
44
43
  var _super = _createSuper(ContextualMenu);
@@ -88,15 +87,15 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
88
87
  value: {
89
88
  name: 'background'
90
89
  },
91
- elemAfter: (0, _react2.jsx)("div", {
90
+ elemAfter: /*#__PURE__*/React.createElement("div", {
92
91
  className: _styles.DropdownMenuSharedCssClassName.SUBMENU
93
- }, (0, _react2.jsx)("div", {
92
+ }, /*#__PURE__*/React.createElement("div", {
94
93
  css: (0, _styles2.cellColourPreviewStyles)(background),
95
94
  className: _types.TableCssClassName.CONTEXTUAL_MENU_ICON
96
- }), isSubmenuOpen && (0, _react2.jsx)("div", {
95
+ }), isSubmenuOpen && /*#__PURE__*/React.createElement("div", {
97
96
  className: _types.TableCssClassName.CONTEXTUAL_SUBMENU,
98
97
  ref: _this.handleSubMenuRef
99
- }, (0, _react2.jsx)(_uiColor.ColorPalette, {
98
+ }, /*#__PURE__*/React.createElement(_uiColor.ColorPalette, {
100
99
  cols: 7,
101
100
  onClick: _this.setColor,
102
101
  selectedColor: background,
@@ -113,7 +112,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
113
112
  value: {
114
113
  name: 'insert_column'
115
114
  },
116
- elemAfter: (0, _react2.jsx)("div", {
115
+ elemAfter: /*#__PURE__*/React.createElement("div", {
117
116
  css: _shortcut.shortcutStyle
118
117
  }, (0, _keymaps.tooltip)(_keymaps.addColumnAfter))
119
118
  });
@@ -122,7 +121,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
122
121
  value: {
123
122
  name: 'insert_row'
124
123
  },
125
- elemAfter: (0, _react2.jsx)("div", {
124
+ elemAfter: /*#__PURE__*/React.createElement("div", {
126
125
  css: _shortcut.shortcutStyle
127
126
  }, (0, _keymaps.tooltip)(_keymaps.addRowAfter))
128
127
  });
@@ -202,7 +201,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
202
201
  value: {
203
202
  name: 'clear'
204
203
  },
205
- elemAfter: (0, _react2.jsx)("div", {
204
+ elemAfter: /*#__PURE__*/React.createElement("div", {
206
205
  css: _shortcut.shortcutStyle
207
206
  }, (0, _keymaps.tooltip)(_keymaps.backspace))
208
207
  });
@@ -364,10 +363,10 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
364
363
  if (!items) {
365
364
  return null;
366
365
  }
367
- return (0, _react2.jsx)("div", {
366
+ return /*#__PURE__*/React.createElement("div", {
368
367
  "data-testid": "table-cell-contextual-menu",
369
368
  onMouseLeave: this.closeSubmenu
370
- }, (0, _react2.jsx)(_uiMenu.DropdownMenu, {
369
+ }, /*#__PURE__*/React.createElement(_uiMenu.DropdownMenu, {
371
370
  mountTo: mountPoint
372
371
  //This needs be removed when the a11y is completely handled
373
372
  //Disabling key navigation now as it works only partially
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
- var _react = require("@emotion/react");
9
8
  var _ui = require("@atlaskit/editor-common/ui");
10
9
  var _utils = require("@atlaskit/editor-prosemirror/utils");
11
10
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
@@ -14,8 +13,6 @@ var _pluginFactory = require("../../pm-plugins/plugin-factory");
14
13
  var _consts = require("../consts");
15
14
  var _ContextualMenu = _interopRequireDefault(require("./ContextualMenu"));
16
15
  var _styles = require("./styles");
17
- /** @jsx jsx */
18
-
19
16
  var FloatingContextualMenu = function FloatingContextualMenu(_ref) {
20
17
  var mountPoint = _ref.mountPoint,
21
18
  boundariesElement = _ref.boundariesElement,
@@ -42,7 +39,7 @@ var FloatingContextualMenu = function FloatingContextualMenu(_ref) {
42
39
  return null;
43
40
  }
44
41
  var parentSticky = targetCellRef.parentElement && targetCellRef.parentElement.className.indexOf('sticky') > -1;
45
- return (0, _react.jsx)(_ui.Popup, {
42
+ return /*#__PURE__*/React.createElement(_ui.Popup, {
46
43
  alignX: "right",
47
44
  alignY: "top",
48
45
  target: targetCellRef,
@@ -58,9 +55,9 @@ var FloatingContextualMenu = function FloatingContextualMenu(_ref) {
58
55
  forcePlacement: true,
59
56
  offset: [-7, 0],
60
57
  stick: true
61
- }, (0, _react.jsx)("div", {
58
+ }, /*#__PURE__*/React.createElement("div", {
62
59
  css: _styles.tablePopupStyles
63
- }, (0, _react.jsx)(_ContextualMenu.default, {
60
+ }, /*#__PURE__*/React.createElement(_ContextualMenu.default, {
64
61
  editorView: editorView,
65
62
  offset: [_consts.contextualMenuTriggerSize / 2, -_consts.contextualMenuTriggerSize],
66
63
  isOpen: isOpen,
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.DragMenu = void 0;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
- var _react = require("@emotion/react");
10
9
  var _uiMenu = require("@atlaskit/editor-common/ui-menu");
11
10
  var _shortcut = require("@atlaskit/editor-shared-styles/shortcut");
12
11
  var _tableMap = require("@atlaskit/editor-tables/table-map");
@@ -17,8 +16,6 @@ var _pluginFactory = require("../../pm-plugins/drag-and-drop/plugin-factory");
17
16
  var _utils2 = require("../../utils");
18
17
  var _dragMenu = require("../../utils/drag-menu");
19
18
  var _consts = require("../consts");
20
- /** @jsx jsx */
21
-
22
19
  var groupedDragMenuConfig = [['add_row_above', 'add_row_below', 'add_column_left', 'add_column_right', 'distribute_columns', 'clear_cells', 'delete_row', 'delete_column'], ['move_column_left', 'move_column_right', 'move_row_up', 'move_row_down'], ['sort_column_asc', 'sort_column_desc']];
23
20
  var convertToDropdownItems = function convertToDropdownItems(dragMenuConfig) {
24
21
  var menuItemsArr = (0, _toConsumableArray2.default)(Array(groupedDragMenuConfig.length)).map(function () {
@@ -39,15 +36,15 @@ var convertToDropdownItems = function convertToDropdownItems(dragMenuConfig) {
39
36
  name: item.id
40
37
  },
41
38
  isDisabled: item.disabled,
42
- elemBefore: item.icon ? (0, _react.jsx)("div", {
39
+ elemBefore: item.icon ? /*#__PURE__*/React.createElement("div", {
43
40
  style: {
44
41
  marginRight: "var(--ds-space-negative-075, -6px)",
45
42
  display: 'flex'
46
43
  }
47
- }, (0, _react.jsx)(item.icon, {
44
+ }, /*#__PURE__*/React.createElement(item.icon, {
48
45
  label: item.title
49
46
  })) : undefined,
50
- elemAfter: item.keymap ? (0, _react.jsx)("div", {
47
+ elemAfter: item.keymap ? /*#__PURE__*/React.createElement("div", {
51
48
  css: _shortcut.shortcutStyle
52
49
  }, item.keymap) : undefined
53
50
  });
@@ -139,7 +136,7 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
139
136
  if (!menuItems) {
140
137
  return null;
141
138
  }
142
- return (0, _react.jsx)(_uiMenu.DropdownMenu, {
139
+ return /*#__PURE__*/React.createElement(_uiMenu.DropdownMenu, {
143
140
  mountTo: mountPoint
144
141
  //This needs be removed when the a11y is completely handled
145
142
  //Disabling key navigation now as it works only partially
@@ -99,14 +99,11 @@ var TableFloatingColumnControls = exports.TableFloatingColumnControls = function
99
99
  }
100
100
  return [0];
101
101
  }, [tableRef, tableRect.height]);
102
- if (!tableRef) {
102
+ if (!tableRef || !tableActive) {
103
103
  return null;
104
104
  }
105
105
  var colWidths = (0, _utils.getColumnsWidths)(editorView);
106
106
  var stickyTop = stickyHeader && stickyHeader.sticky && hasHeaderRow ? stickyHeader.top : undefined;
107
- if (!tableActive) {
108
- return null;
109
- }
110
107
  return /*#__PURE__*/_react.default.createElement("div", {
111
108
  className: _types.TableCssClassName.DRAG_COLUMN_CONTROLS_WRAPPER,
112
109
  "data-testid": "table-floating-column-controls-wrapper"
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.isColumnDeleteButtonVisible = exports.getColumnsWidths = exports.getColumnDeleteButtonParams = exports.getColumnClassNames = exports.colWidthsForRow = void 0;
7
+ exports.isColumnDeleteButtonVisible = exports.getColumnsWidths = exports.getColumnIndexMappedToColumnIndexInFirstRow = exports.getColumnDeleteButtonParams = exports.getColumnClassNames = exports.convertHTMLCellIndexToColumnIndex = exports.colWidthsForRow = void 0;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
9
  var _utils = require("@atlaskit/editor-common/utils");
10
10
  var _utils2 = require("@atlaskit/editor-prosemirror/utils");
@@ -189,4 +189,66 @@ var colWidthsForRow = exports.colWidthsForRow = function colWidthsForRow(tr) {
189
189
  return pctWidths.map(function (pct) {
190
190
  return "".concat(pct, "%");
191
191
  }).join(' ');
192
+ };
193
+ var convertHTMLCellIndexToColumnIndex = exports.convertHTMLCellIndexToColumnIndex = function convertHTMLCellIndexToColumnIndex(htmlColIndex, htmlRowIndex, tableMap) {
194
+ // Same numbers (positions) in tableMap.map array mean that there are merged cells.
195
+ // Cells can be merged across columns. So we need to check if the cell on the left and current cell have the same value.
196
+ // Cells can be merged acroll rows. So we need to check if the cell above has the same value as current cell.
197
+ // When cell has the same value as the cell above it or the cell to the left of it, html cellIndex won't count it a separete column.
198
+ var width = tableMap.width;
199
+ var map = tableMap.map;
200
+ var htmlColCount = 0;
201
+ if (htmlRowIndex === 0) {
202
+ for (var colIndex = 0; colIndex < width; colIndex++) {
203
+ if (colIndex === 0 || map[colIndex] !== map[colIndex - 1]) {
204
+ htmlColCount++;
205
+ }
206
+ if (htmlColCount - 1 === htmlColIndex) {
207
+ return colIndex;
208
+ }
209
+ }
210
+ } else {
211
+ for (var _colIndex = 0; _colIndex < width; _colIndex++) {
212
+ var currentCellMapIndex = htmlRowIndex * width + _colIndex;
213
+ var cellAboveMapIndex = (htmlRowIndex - 1) * width + _colIndex;
214
+ if (_colIndex > 0) {
215
+ if (map[currentCellMapIndex] !== map[currentCellMapIndex - 1] && map[currentCellMapIndex] !== map[cellAboveMapIndex]) {
216
+ htmlColCount++;
217
+ }
218
+ } else {
219
+ if (map[currentCellMapIndex] !== map[cellAboveMapIndex]) {
220
+ htmlColCount++;
221
+ }
222
+ }
223
+ if (htmlColCount - 1 === htmlColIndex) {
224
+ return _colIndex;
225
+ }
226
+ }
227
+ }
228
+ return 0;
229
+ };
230
+
231
+ // When first row has merged cells, our converted column index needs to be mapped.
232
+ var getColumnIndexMappedToColumnIndexInFirstRow = exports.getColumnIndexMappedToColumnIndexInFirstRow = function getColumnIndexMappedToColumnIndexInFirstRow(convertedColIndex, htmlRowIndex, tableMap) {
233
+ var width = tableMap.width;
234
+ var map = tableMap.map;
235
+ var mapColIndexToFistRowColIndex = [];
236
+ var htmlColCounFirstRow = 0;
237
+ var colSpan = 0;
238
+ if (htmlRowIndex === 0) {
239
+ return convertedColIndex;
240
+ }
241
+ for (var colIndex = 0; colIndex < width; colIndex++) {
242
+ if (colIndex === 0 || map[colIndex] !== map[colIndex - 1]) {
243
+ if (colSpan > 0) {
244
+ htmlColCounFirstRow += colSpan;
245
+ colSpan = 0;
246
+ }
247
+ htmlColCounFirstRow++;
248
+ } else if (map[colIndex] === map[colIndex - 1]) {
249
+ colSpan++;
250
+ }
251
+ mapColIndexToFistRowColIndex[colIndex] = htmlColCounFirstRow - 1;
252
+ }
253
+ return mapColIndexToFistRowColIndex[convertedColIndex];
192
254
  };
@@ -39,6 +39,12 @@ Object.defineProperty(exports, "containsHeaderRow", {
39
39
  return _nodes.containsHeaderRow;
40
40
  }
41
41
  });
42
+ Object.defineProperty(exports, "convertHTMLCellIndexToColumnIndex", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _columnControls.convertHTMLCellIndexToColumnIndex;
46
+ }
47
+ });
42
48
  Object.defineProperty(exports, "copyPreviousRow", {
43
49
  enumerable: true,
44
50
  get: function get() {
@@ -111,6 +117,12 @@ Object.defineProperty(exports, "getColumnDeleteButtonParams", {
111
117
  return _columnControls.getColumnDeleteButtonParams;
112
118
  }
113
119
  });
120
+ Object.defineProperty(exports, "getColumnIndexMappedToColumnIndexInFirstRow", {
121
+ enumerable: true,
122
+ get: function get() {
123
+ return _columnControls.getColumnIndexMappedToColumnIndexInFirstRow;
124
+ }
125
+ });
114
126
  Object.defineProperty(exports, "getColumnOrRowIndex", {
115
127
  enumerable: true,
116
128
  get: function get() {
@@ -10,7 +10,7 @@ import { getPluginState } from './pm-plugins/plugin-factory';
10
10
  import { getPluginState as getResizePluginState } from './pm-plugins/table-resizing/plugin-factory';
11
11
  import { deleteColumns, deleteRows } from './transforms';
12
12
  import { RESIZE_HANDLE_AREA_DECORATION_GAP } from './types';
13
- import { getColumnOrRowIndex, getMousePositionHorizontalRelativeByElement, getMousePositionVerticalRelativeByElement, getSelectedCellInfo, hasResizeHandler, isCell, isColumnControlsDecorations, isCornerButton, isDragColumnFloatingInsertDot, isDragCornerButton, isDragRowFloatingInsertDot, isInsertRowButton, isResizeHandleDecoration, isRowControlsButton, isTableContainerOrWrapper, isTableControlsButton } from './utils';
13
+ import { convertHTMLCellIndexToColumnIndex, getColumnIndexMappedToColumnIndexInFirstRow, getColumnOrRowIndex, getMousePositionHorizontalRelativeByElement, getMousePositionVerticalRelativeByElement, getSelectedCellInfo, hasResizeHandler, isCell, isColumnControlsDecorations, isCornerButton, isDragColumnFloatingInsertDot, isDragCornerButton, isDragRowFloatingInsertDot, isInsertRowButton, isResizeHandleDecoration, isRowControlsButton, isTableContainerOrWrapper, isTableControlsButton } from './utils';
14
14
  import { getAllowAddColumnCustomStep } from './utils/get-allow-add-column-custom-step';
15
15
  const isFocusingCalendar = event => event instanceof FocusEvent && event.relatedTarget instanceof HTMLElement && event.relatedTarget.getAttribute('aria-label') === 'calendar';
16
16
  const isFocusingModal = event => event instanceof FocusEvent && event.relatedTarget instanceof HTMLElement && event.relatedTarget.closest('[role="dialog"]');
@@ -356,13 +356,19 @@ const trackCellLocation = (view, mouseEvent) => {
356
356
  if (!maybeTableCell || !tableRef) {
357
357
  return;
358
358
  }
359
- const colIndex = maybeTableCell.cellIndex;
359
+ const htmlColIndex = maybeTableCell.cellIndex;
360
360
  const rowElement = closestElement(target, 'tr');
361
- const rowIndex = rowElement && rowElement.rowIndex;
361
+ const htmlRowIndex = rowElement && rowElement.rowIndex;
362
362
  const colHeight = tableRef.offsetHeight;
363
363
  const colWidth = maybeTableCell.offsetWidth;
364
- if (hoveredCell.colIndex !== colIndex || hoveredCell.rowIndex !== rowIndex || hoveredCell.colWidth !== colWidth || hoveredCell.colHeight !== colHeight) {
365
- hoverCell(rowIndex, colIndex, colWidth, colHeight)(view.state, view.dispatch);
364
+ const tableMap = tableNode && TableMap.get(tableNode);
365
+ let colIndex = htmlColIndex;
366
+ if (tableMap) {
367
+ const convertedColIndex = convertHTMLCellIndexToColumnIndex(htmlColIndex, htmlRowIndex, tableMap);
368
+ colIndex = getColumnIndexMappedToColumnIndexInFirstRow(convertedColIndex, htmlRowIndex, tableMap);
369
+ }
370
+ if (hoveredCell.colIndex !== colIndex || hoveredCell.rowIndex !== htmlRowIndex || hoveredCell.colWidth !== colWidth || hoveredCell.colHeight !== colHeight) {
371
+ hoverCell(htmlRowIndex, colIndex, colWidth, colHeight)(view.state, view.dispatch);
366
372
  }
367
373
  };
368
374
  export const withCellTracking = (eventHandler, elementContentRects) => (view, mouseEvent) => {
@@ -1,5 +1,3 @@
1
- /** @jsx jsx */
2
- import { jsx } from '@emotion/react';
3
1
  import { TableSortOrder as SortOrder } from '@atlaskit/custom-steps';
4
2
  import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
5
3
  import { addColumnAfter, addRowAfter, backspace, tooltip } from '@atlaskit/editor-common/keymaps';
@@ -89,7 +87,7 @@ export const getToolbarCellOptionsConfig = (editorState, editorView, initialSele
89
87
  },
90
88
  selected: false,
91
89
  disabled: false,
92
- elemAfter: jsx("div", {
90
+ elemAfter: /*#__PURE__*/React.createElement("div", {
93
91
  css: shortcutStyle
94
92
  }, tooltip(addColumnAfter))
95
93
  }, {
@@ -108,7 +106,7 @@ export const getToolbarCellOptionsConfig = (editorState, editorView, initialSele
108
106
  },
109
107
  selected: false,
110
108
  disabled: false,
111
- elemAfter: jsx("div", {
109
+ elemAfter: /*#__PURE__*/React.createElement("div", {
112
110
  css: shortcutStyle
113
111
  }, tooltip(addRowAfter))
114
112
  }, {
@@ -241,7 +239,7 @@ export const getToolbarCellOptionsConfig = (editorState, editorView, initialSele
241
239
  },
242
240
  selected: false,
243
241
  disabled: false,
244
- elemAfter: jsx("div", {
242
+ elemAfter: /*#__PURE__*/React.createElement("div", {
245
243
  css: shortcutStyle
246
244
  }, tooltip(backspace))
247
245
  });
@@ -1,7 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- /** @jsx jsx */
3
2
  import React from 'react';
4
- import { jsx } from '@emotion/react';
5
3
  import { useIntl } from 'react-intl-next';
6
4
  import { tableMessages as messages } from '@atlaskit/editor-common/messages';
7
5
  import Tooltip from '@atlaskit/tooltip';
@@ -15,19 +13,19 @@ export const ColumnResizeWidget = ({
15
13
  formatMessage
16
14
  } = useIntl();
17
15
  if (!includeTooltip) {
18
- return jsx("div", {
16
+ return /*#__PURE__*/React.createElement("div", {
19
17
  className: TableCssClassName.RESIZE_HANDLE_DECORATION,
20
18
  "data-start-index": startIndex,
21
19
  "data-end-index": endIndex
22
20
  });
23
21
  }
24
- return jsx(Tooltip, {
22
+ return /*#__PURE__*/React.createElement(Tooltip, {
25
23
  content: formatMessage(messages.adjustColumns),
26
24
  hideTooltipOnClick: true,
27
25
  hideTooltipOnMouseDown: true,
28
26
  position: "mouse",
29
27
  mousePosition: "auto-start"
30
- }, tooltipProps => jsx("div", _extends({
28
+ }, tooltipProps => /*#__PURE__*/React.createElement("div", _extends({
31
29
  className: TableCssClassName.RESIZE_HANDLE_DECORATION,
32
30
  "data-start-index": startIndex,
33
31
  "data-end-index": endIndex