@atlaskit/editor-plugin-table 7.4.7 → 7.4.9

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 (58) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/commands/insert.js +5 -12
  3. package/dist/cjs/plugin.js +17 -11
  4. package/dist/cjs/pm-plugins/table-width.js +53 -34
  5. package/dist/cjs/ui/FloatingContextualMenu/index.js +1 -1
  6. package/dist/cjs/ui/FloatingDragMenu/DragMenu.js +13 -3
  7. package/dist/cjs/ui/FloatingDragMenu/DropdownMenu.js +53 -8
  8. package/dist/cjs/ui/FloatingDragMenu/index.js +9 -5
  9. package/dist/cjs/ui/consts.js +2 -1
  10. package/dist/cjs/utils/create.js +28 -0
  11. package/dist/cjs/utils/index.js +8 -1
  12. package/dist/es2019/commands/insert.js +7 -14
  13. package/dist/es2019/plugin.js +16 -10
  14. package/dist/es2019/pm-plugins/table-width.js +133 -114
  15. package/dist/es2019/ui/FloatingContextualMenu/index.js +2 -2
  16. package/dist/es2019/ui/FloatingDragMenu/DragMenu.js +13 -3
  17. package/dist/es2019/ui/FloatingDragMenu/DropdownMenu.js +42 -8
  18. package/dist/es2019/ui/FloatingDragMenu/index.js +10 -6
  19. package/dist/es2019/ui/consts.js +1 -0
  20. package/dist/es2019/utils/create.js +18 -0
  21. package/dist/es2019/utils/index.js +2 -1
  22. package/dist/esm/commands/insert.js +7 -14
  23. package/dist/esm/plugin.js +16 -10
  24. package/dist/esm/pm-plugins/table-width.js +53 -34
  25. package/dist/esm/ui/FloatingContextualMenu/index.js +2 -2
  26. package/dist/esm/ui/FloatingDragMenu/DragMenu.js +13 -3
  27. package/dist/esm/ui/FloatingDragMenu/DropdownMenu.js +50 -9
  28. package/dist/esm/ui/FloatingDragMenu/index.js +10 -6
  29. package/dist/esm/ui/consts.js +1 -0
  30. package/dist/esm/utils/create.js +21 -0
  31. package/dist/esm/utils/index.js +2 -1
  32. package/dist/types/commands/insert.d.ts +3 -3
  33. package/dist/types/plugin.d.ts +4 -0
  34. package/dist/types/pm-plugins/table-width.d.ts +2 -1
  35. package/dist/types/ui/FloatingDragMenu/DragMenu.d.ts +6 -1
  36. package/dist/types/ui/FloatingDragMenu/DropdownMenu.d.ts +8 -2
  37. package/dist/types/ui/consts.d.ts +1 -0
  38. package/dist/types/utils/create.d.ts +6 -0
  39. package/dist/types/utils/index.d.ts +1 -0
  40. package/dist/types-ts4.5/commands/insert.d.ts +3 -3
  41. package/dist/types-ts4.5/plugin.d.ts +4 -0
  42. package/dist/types-ts4.5/pm-plugins/table-width.d.ts +2 -1
  43. package/dist/types-ts4.5/ui/FloatingDragMenu/DragMenu.d.ts +6 -1
  44. package/dist/types-ts4.5/ui/FloatingDragMenu/DropdownMenu.d.ts +8 -2
  45. package/dist/types-ts4.5/ui/consts.d.ts +1 -0
  46. package/dist/types-ts4.5/utils/create.d.ts +6 -0
  47. package/dist/types-ts4.5/utils/index.d.ts +1 -0
  48. package/package.json +2 -2
  49. package/src/commands/insert.ts +35 -19
  50. package/src/plugin.tsx +32 -9
  51. package/src/pm-plugins/table-width.ts +71 -38
  52. package/src/ui/FloatingContextualMenu/index.tsx +2 -1
  53. package/src/ui/FloatingDragMenu/DragMenu.tsx +16 -1
  54. package/src/ui/FloatingDragMenu/DropdownMenu.tsx +94 -50
  55. package/src/ui/FloatingDragMenu/index.tsx +8 -3
  56. package/src/ui/consts.ts +1 -0
  57. package/src/utils/create.ts +32 -0
  58. package/src/utils/index.ts +1 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/editor-plugin-table
2
2
 
3
+ ## 7.4.9
4
+
5
+ ### Patch Changes
6
+
7
+ - [#78202](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/78202) [`287432cbca17`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/287432cbca17) - [ux] ED-22099: Fixed drag menu position when close to edge of view port.
8
+
9
+ ## 7.4.8
10
+
11
+ ### Patch Changes
12
+
13
+ - [#77796](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/77796) [`eab996d08513`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/eab996d08513) - Add new statsig experiement for preserve table width, add support for passing through width to create table. Allow tables to be inserted at full width
14
+
3
15
  ## 7.4.7
4
16
 
5
17
  ### Patch Changes
@@ -89,8 +89,6 @@ var addColumnAfter = exports.addColumnAfter = function addColumnAfter(getEditorC
89
89
  return true;
90
90
  };
91
91
  };
92
-
93
- // #region Commands
94
92
  var insertColumn = exports.insertColumn = function insertColumn(getEditorContainerWidth) {
95
93
  return function (column) {
96
94
  return function (state, dispatch, view) {
@@ -143,28 +141,23 @@ var insertRow = exports.insertRow = function insertRow(row, moveCursorToTheNewRo
143
141
  return true;
144
142
  };
145
143
  };
146
- var createTable = exports.createTable = function createTable() {
144
+ var createTable = exports.createTable = function createTable(isFullWidthModeEnabled, getEditorFeatureFlags) {
147
145
  return function (state, dispatch) {
148
- var table = (0, _utils2.createTable)({
149
- schema: state.schema
150
- });
146
+ var table = (0, _utils3.createTableWithWidth)(isFullWidthModeEnabled, getEditorFeatureFlags)(state.schema);
151
147
  if (dispatch) {
152
148
  dispatch((0, _utils.safeInsert)(table)(state.tr).scrollIntoView());
153
149
  }
154
150
  return true;
155
151
  };
156
152
  };
157
- // #endregion
158
-
159
- var insertTableWithSize = exports.insertTableWithSize = function insertTableWithSize(editorAnalyticsAPI) {
153
+ var insertTableWithSize = exports.insertTableWithSize = function insertTableWithSize(isFullWidthModeEnabled, getEditorFeatureFlags, editorAnalyticsAPI) {
160
154
  return function (rowsCount, colsCount, inputMethod) {
161
155
  return function (_ref) {
162
156
  var tr = _ref.tr;
163
- var tableNode = (0, _utils2.createTable)({
164
- schema: tr.doc.type.schema,
157
+ var tableNode = (0, _utils3.createTableWithWidth)(isFullWidthModeEnabled, getEditorFeatureFlags, {
165
158
  rowsCount: rowsCount,
166
159
  colsCount: colsCount
167
- });
160
+ })(tr.doc.type.schema);
168
161
  var newTr = (0, _utils.safeInsert)(tableNode)(tr).scrollIntoView();
169
162
  if (inputMethod) {
170
163
  editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({
@@ -16,7 +16,6 @@ var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
16
16
  var _utils = require("@atlaskit/editor-common/utils");
17
17
  var _withPluginState = require("@atlaskit/editor-common/with-plugin-state");
18
18
  var _pmPlugins = require("@atlaskit/editor-tables/pm-plugins");
19
- var _utils2 = require("@atlaskit/editor-tables/utils");
20
19
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
21
20
  var _insert = require("./commands/insert");
22
21
  var _createPluginConfig = require("./create-plugin-config");
@@ -41,7 +40,7 @@ var _FloatingDeleteButton = _interopRequireDefault(require("./ui/FloatingDeleteB
41
40
  var _FloatingDragMenu = _interopRequireDefault(require("./ui/FloatingDragMenu"));
42
41
  var _FloatingInsertButton = _interopRequireDefault(require("./ui/FloatingInsertButton"));
43
42
  var _LayoutButton = _interopRequireDefault(require("./ui/LayoutButton"));
44
- var _utils3 = require("./utils");
43
+ var _utils2 = require("./utils");
45
44
  var defaultGetEditorFeatureFlags = function defaultGetEditorFeatureFlags() {
46
45
  return {};
47
46
  };
@@ -66,13 +65,19 @@ var tablesPlugin = function tablesPlugin(_ref) {
66
65
  var editorAnalyticsAPI = api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions;
67
66
  return {
68
67
  name: 'table',
68
+ // Use getSharedState to store fullWidthEnabled and wasFullWidthModeEnabled to guarantee access
69
+ // to most up to date values - passing to createPluginState will not re-initialise the state
70
+ getSharedState: function getSharedState() {
71
+ return {
72
+ isFullWidthModeEnabled: !!(options !== null && options !== void 0 && options.fullWidthEnabled),
73
+ wasFullWidthModeEnabled: !!(options !== null && options !== void 0 && options.wasFullWidthEnabled)
74
+ };
75
+ },
69
76
  actions: {
70
77
  insertTable: function insertTable(analyticsPayload) {
71
78
  return function (state, dispatch) {
72
79
  var _api$contentInsertion, _api$contentInsertion2;
73
- var node = (0, _utils2.createTable)({
74
- schema: state.schema
75
- });
80
+ var node = (0, _utils2.createTableWithWidth)(options === null || options === void 0 ? void 0 : options.fullWidthEnabled, options === null || options === void 0 ? void 0 : options.getEditorFeatureFlags)(state.schema);
76
81
  return (_api$contentInsertion = api === null || api === void 0 || (_api$contentInsertion2 = api.contentInsertion) === null || _api$contentInsertion2 === void 0 || (_api$contentInsertion2 = _api$contentInsertion2.actions) === null || _api$contentInsertion2 === void 0 ? void 0 : _api$contentInsertion2.insert({
77
82
  state: state,
78
83
  dispatch: dispatch,
@@ -86,7 +91,7 @@ var tablesPlugin = function tablesPlugin(_ref) {
86
91
  }
87
92
  },
88
93
  commands: {
89
- insertTableWithSize: (0, _insert.insertTableWithSize)(api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions)
94
+ insertTableWithSize: (0, _insert.insertTableWithSize)(options === null || options === void 0 ? void 0 : options.fullWidthEnabled, options === null || options === void 0 ? void 0 : options.getEditorFeatureFlags, api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions)
90
95
  },
91
96
  nodes: function nodes() {
92
97
  var tableNode = options !== null && options !== void 0 && options.tableResizingEnabled ? _adfSchema.tableWithCustomWidth : _adfSchema.table;
@@ -208,7 +213,7 @@ var tablesPlugin = function tablesPlugin(_ref) {
208
213
  var _options$fullWidthEna;
209
214
  var dispatchAnalyticsEvent = _ref12.dispatchAnalyticsEvent,
210
215
  dispatch = _ref12.dispatch;
211
- return options !== null && options !== void 0 && options.tableResizingEnabled ? (0, _tableWidth.createPlugin)(dispatch, dispatchAnalyticsEvent, (_options$fullWidthEna = options === null || options === void 0 ? void 0 : options.fullWidthEnabled) !== null && _options$fullWidthEna !== void 0 ? _options$fullWidthEna : false) : undefined;
216
+ return options !== null && options !== void 0 && options.tableResizingEnabled ? (0, _tableWidth.createPlugin)(dispatch, dispatchAnalyticsEvent, (_options$fullWidthEna = options === null || options === void 0 ? void 0 : options.fullWidthEnabled) !== null && _options$fullWidthEna !== void 0 ? _options$fullWidthEna : false, options === null || options === void 0 ? void 0 : options.getEditorFeatureFlags) : undefined;
212
217
  }
213
218
  },
214
219
  // TODO: should be deprecated and eventually replaced with 'tableAnalyticsPlugin'
@@ -300,7 +305,7 @@ var tablesPlugin = function tablesPlugin(_ref) {
300
305
  tableWrapperTarget = _ref17.tableWrapperTarget;
301
306
  var allowControls = pluginConfig.allowControls;
302
307
  var stickyHeader = stickyHeadersState ? (0, _stickyHeaders.findStickyHeaderForTable)(stickyHeadersState, tablePos) : undefined;
303
- var LayoutContent = options && !options.tableResizingEnabled && (0, _utils3.isLayoutSupported)(state) && options.breakoutEnabled ? /*#__PURE__*/_react.default.createElement(_LayoutButton.default, {
308
+ var LayoutContent = options && !options.tableResizingEnabled && (0, _utils2.isLayoutSupported)(state) && options.breakoutEnabled ? /*#__PURE__*/_react.default.createElement(_LayoutButton.default, {
304
309
  editorView: editorView,
305
310
  mountPoint: popupsMountPoint,
306
311
  boundariesElement: popupsBoundariesElement,
@@ -391,9 +396,10 @@ var tablesPlugin = function tablesPlugin(_ref) {
391
396
  return /*#__PURE__*/_react.default.createElement(_icons.IconTable, null);
392
397
  },
393
398
  action: function action(insert, state) {
394
- var tr = insert((0, _utils2.createTable)({
395
- schema: state.schema
396
- }));
399
+ var _api$table;
400
+ // see comment on tablesPlugin.getSharedState on usage
401
+ var tableState = api === null || api === void 0 || (_api$table = api.table) === null || _api$table === void 0 ? void 0 : _api$table.sharedState.currentState();
402
+ var tr = insert((0, _utils2.createTableWithWidth)(tableState === null || tableState === void 0 ? void 0 : tableState.isFullWidthModeEnabled, options === null || options === void 0 ? void 0 : options.getEditorFeatureFlags)(state.schema));
397
403
  editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({
398
404
  action: _analytics.ACTION.INSERTED,
399
405
  actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
@@ -14,6 +14,7 @@ var _state = require("@atlaskit/editor-prosemirror/state");
14
14
  var _transform = require("@atlaskit/editor-prosemirror/transform");
15
15
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
16
16
  var _utils = require("@atlaskit/editor-tables/utils");
17
+ var _utils2 = require("./table-resizing/utils");
17
18
  var _excluded = ["width"];
18
19
  /**
19
20
  * A plugin for handle table custom widths
@@ -23,7 +24,7 @@ var _excluded = ["width"];
23
24
  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; }
24
25
  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; }
25
26
  var pluginKey = exports.pluginKey = new _state.PluginKey('tableWidthPlugin');
26
- var createPlugin = exports.createPlugin = function createPlugin(dispatch, dispatchAnalyticsEvent, fullWidthEnabled) {
27
+ var createPlugin = exports.createPlugin = function createPlugin(dispatch, dispatchAnalyticsEvent, fullWidthEnabled, getEditorFeatureFlags) {
27
28
  return new _safePlugin.SafePlugin({
28
29
  key: pluginKey,
29
30
  state: {
@@ -65,6 +66,7 @@ var createPlugin = exports.createPlugin = function createPlugin(dispatch, dispat
65
66
  }
66
67
  });
67
68
  }
69
+
68
70
  // When document first load in Confluence, initially it is an empty document
69
71
  // and Collab service triggers a transaction to replace the empty document with the real document that should be rendered.
70
72
  // what we need to do is to add width attr to all tables in the real document
@@ -86,11 +88,15 @@ var createPlugin = exports.createPlugin = function createPlugin(dispatch, dispat
86
88
  });
87
89
  return hasStepReplacingEntireDocument;
88
90
  });
89
- if (!isReplaceDocumentOperation) {
91
+ var referentialityTr = transactions.find(function (tr) {
92
+ return tr.getMeta('referentialityTableInserted');
93
+ });
94
+ var shouldPatchTable = fullWidthEnabled && getEditorFeatureFlags && getEditorFeatureFlags()['tablePreserveWidth'];
95
+ if (!isReplaceDocumentOperation && (!shouldPatchTable || !referentialityTr)) {
90
96
  return null;
91
97
  }
92
- var tr = newState.tr;
93
98
  var table = newState.schema.nodes.table;
99
+ var tr = newState.tr;
94
100
 
95
101
  /**
96
102
  * Select table event
@@ -108,40 +114,53 @@ var createPlugin = exports.createPlugin = function createPlugin(dispatch, dispat
108
114
  }
109
115
  });
110
116
  }
111
- newState.doc.forEach(function (node, offset) {
112
- if (node.type === table) {
113
- var width = node.attrs.width;
114
- var layout = node.attrs.layout;
115
- if (!width && layout) {
116
- var tableWidthCal;
117
- if (fullWidthEnabled) {
118
- tableWidthCal = _editorSharedStyles.akEditorFullWidthLayoutWidth;
119
- } else {
120
- switch (layout) {
121
- case 'wide':
122
- tableWidthCal = _editorSharedStyles.akEditorWideLayoutWidth;
123
- break;
124
- case 'full-width':
125
- tableWidthCal = _editorSharedStyles.akEditorFullWidthLayoutWidth;
126
- break;
127
- // when in fix-width appearance, no need to assign value to table width attr
128
- // as when table is created, width attr is null by default, table rendered using layout attr
129
- default:
130
- tableWidthCal = _editorSharedStyles.akEditorDefaultLayoutWidth;
131
- break;
117
+ if (isReplaceDocumentOperation) {
118
+ newState.doc.forEach(function (node, offset) {
119
+ if (node.type === table) {
120
+ var width = node.attrs.width;
121
+ var layout = node.attrs.layout;
122
+ if (!width && layout) {
123
+ var tableWidthCal;
124
+ if (fullWidthEnabled) {
125
+ tableWidthCal = _editorSharedStyles.akEditorFullWidthLayoutWidth;
126
+ } else {
127
+ switch (layout) {
128
+ case 'wide':
129
+ tableWidthCal = _editorSharedStyles.akEditorWideLayoutWidth;
130
+ break;
131
+ case 'full-width':
132
+ tableWidthCal = _editorSharedStyles.akEditorFullWidthLayoutWidth;
133
+ break;
134
+ // when in fix-width appearance, no need to assign value to table width attr
135
+ // as when table is created, width attr is null by default, table rendered using layout attr
136
+ default:
137
+ tableWidthCal = _editorSharedStyles.akEditorDefaultLayoutWidth;
138
+ break;
139
+ }
140
+ }
141
+ var _node$attrs = node.attrs,
142
+ _width = _node$attrs.width,
143
+ rest = (0, _objectWithoutProperties2.default)(_node$attrs, _excluded);
144
+ if (tableWidthCal) {
145
+ tr.step(new _steps.SetAttrsStep(offset, _objectSpread({
146
+ width: tableWidthCal
147
+ }, rest)));
132
148
  }
133
- }
134
- var _node$attrs = node.attrs,
135
- _width = _node$attrs.width,
136
- rest = (0, _objectWithoutProperties2.default)(_node$attrs, _excluded);
137
- if (tableWidthCal) {
138
- tr.step(new _steps.SetAttrsStep(offset, _objectSpread({
139
- width: tableWidthCal
140
- }, rest)));
141
149
  }
142
150
  }
143
- }
144
- });
151
+ });
152
+ }
153
+ if (referentialityTr) {
154
+ referentialityTr.steps.forEach(function (step) {
155
+ step.getMap().forEach(function (oldStart, oldEnd, newStart, newEnd) {
156
+ newState.doc.nodesBetween(newStart, newEnd, function (node, pos) {
157
+ if (node.type === table && node.attrs.width !== _utils2.TABLE_MAX_WIDTH) {
158
+ tr.setNodeAttribute(pos, 'width', _utils2.TABLE_MAX_WIDTH);
159
+ }
160
+ });
161
+ });
162
+ });
163
+ }
145
164
  return tr;
146
165
  }
147
166
  });
@@ -50,7 +50,7 @@ var FloatingContextualMenu = function FloatingContextualMenu(_ref) {
50
50
  mountTo: mountPoint,
51
51
  boundariesElement: boundariesElement,
52
52
  scrollableElement: scrollableElement,
53
- fitHeight: 188,
53
+ fitHeight: _consts.tablePopupMenuFitHeight,
54
54
  fitWidth: isDragAndDropEnabled ? _consts.contextualMenuDropdownWidthDnD : _consts.contextualMenuDropdownWidth
55
55
  // z-index value below is to ensure that this menu is above other floating menu
56
56
  // in table, but below floating dialogs like typeaheads, pickers, etc.
@@ -185,7 +185,12 @@ var DragMenu = exports.DragMenu = /*#__PURE__*/_react.default.memo(function (_re
185
185
  getEditorContainerWidth = _ref.getEditorContainerWidth,
186
186
  editorAnalyticsAPI = _ref.editorAnalyticsAPI,
187
187
  pluginConfig = _ref.pluginConfig,
188
- formatMessage = _ref.intl.formatMessage;
188
+ formatMessage = _ref.intl.formatMessage,
189
+ fitHeight = _ref.fitHeight,
190
+ fitWidth = _ref.fitWidth,
191
+ mountPoint = _ref.mountPoint,
192
+ scrollableElement = _ref.scrollableElement,
193
+ boundariesElement = _ref.boundariesElement;
189
194
  var state = editorView.state,
190
195
  dispatch = editorView.dispatch;
191
196
  var selection = state.selection;
@@ -457,12 +462,17 @@ var DragMenu = exports.DragMenu = /*#__PURE__*/_react.default.memo(function (_re
457
462
  section: {
458
463
  hasSeparator: true
459
464
  },
460
- target: target,
461
465
  items: menuItems,
462
466
  onItemActivated: handleMenuItemActivated,
463
467
  onMouseEnter: handleItemMouseEnter,
464
468
  onMouseLeave: handleItemMouseLeave,
465
- handleClose: closeMenu
469
+ handleClose: closeMenu,
470
+ fitHeight: fitHeight,
471
+ fitWidth: fitWidth,
472
+ direction: direction,
473
+ mountPoint: mountPoint,
474
+ boundariesElement: boundariesElement,
475
+ scrollableElement: scrollableElement
466
476
  });
467
477
  });
468
478
  var _default = exports.default = (0, _reactIntlNext.injectIntl)(DragMenu);
@@ -1,32 +1,55 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.DropdownMenu = void 0;
8
- var _react = _interopRequireDefault(require("react"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
9
11
  var _ui = require("@atlaskit/editor-common/ui");
10
12
  var _uiMenu = require("@atlaskit/editor-common/ui-menu");
11
13
  var _uiReact = require("@atlaskit/editor-common/ui-react");
14
+ var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
12
15
  var _menu = require("@atlaskit/menu");
13
16
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
14
17
  var _consts = require("../consts");
18
+ 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); }
19
+ 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; }
20
+ /* eslint-disable @atlaskit/design-system/prefer-primitives */
21
+
15
22
  var DropListWithOutsideListeners = (0, _uiReact.withReactEditorViewOuterListeners)(_ui.DropList);
16
23
  var DropdownMenu = exports.DropdownMenu = function DropdownMenu(_ref) {
17
- var target = _ref.target,
18
- items = _ref.items,
24
+ var items = _ref.items,
19
25
  section = _ref.section,
20
26
  disableKeyboardHandling = _ref.disableKeyboardHandling,
21
27
  onItemActivated = _ref.onItemActivated,
22
28
  handleClose = _ref.handleClose,
23
29
  onMouseEnter = _ref.onMouseEnter,
24
- onMouseLeave = _ref.onMouseLeave;
30
+ onMouseLeave = _ref.onMouseLeave,
31
+ fitWidth = _ref.fitWidth,
32
+ fitHeight = _ref.fitHeight,
33
+ direction = _ref.direction,
34
+ mountPoint = _ref.mountPoint,
35
+ boundariesElement = _ref.boundariesElement,
36
+ scrollableElement = _ref.scrollableElement;
37
+ var _useState = (0, _react.useState)(['bottom', 'left']),
38
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
39
+ popupPlacement = _useState2[0],
40
+ setPopupPlacement = _useState2[1];
41
+ var _useState3 = (0, _react.useState)(null),
42
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
43
+ targetRefDiv = _useState4[0],
44
+ setTargetRefDiv = _useState4[1];
45
+ var handleRef = function handleRef(ref) {
46
+ setTargetRefDiv(ref);
47
+ };
25
48
  var innerMenu = function innerMenu() {
26
49
  return /*#__PURE__*/_react.default.createElement(DropListWithOutsideListeners, {
27
50
  isOpen: true,
28
51
  shouldFitContainer: true,
29
- position: ['bottom', 'left'].join(' '),
52
+ position: popupPlacement.join(' '),
30
53
  handleClickOutside: function handleClickOutside() {
31
54
  return handleClose('editor');
32
55
  },
@@ -41,7 +64,7 @@ var DropdownMenu = exports.DropdownMenu = function DropdownMenu(_ref) {
41
64
  e.stopPropagation();
42
65
  }
43
66
  },
44
- targetRef: target
67
+ targetRef: targetRefDiv
45
68
  }, /*#__PURE__*/_react.default.createElement("div", {
46
69
  style: {
47
70
  height: 0,
@@ -70,7 +93,29 @@ var DropdownMenu = exports.DropdownMenu = function DropdownMenu(_ref) {
70
93
  if (disableKeyboardHandling) {
71
94
  return innerMenu();
72
95
  }
73
- return /*#__PURE__*/_react.default.createElement(_uiMenu.ArrowKeyNavigationProvider, {
96
+
97
+ // more offsets calculation as offsets depend on the direction and updated placement here
98
+ var offsetY = direction === 'row' ? popupPlacement[0] === 'bottom' ? -8 : -34 : 0;
99
+ var offsetX = direction === 'column' ? popupPlacement[1] === 'left' ? 0 : -7 : 0;
100
+ return /*#__PURE__*/_react.default.createElement("div", {
101
+ className: "drag-dropdown-menu-wrapper"
102
+ }, /*#__PURE__*/_react.default.createElement("div", {
103
+ className: "drag-dropdown-menu-popup-ref",
104
+ ref: handleRef
105
+ }), /*#__PURE__*/_react.default.createElement(_ui.Popup, {
106
+ target: targetRefDiv,
107
+ mountTo: mountPoint,
108
+ boundariesElement: boundariesElement,
109
+ scrollableElement: scrollableElement,
110
+ onPlacementChanged: function onPlacementChanged(placement) {
111
+ setPopupPlacement(placement);
112
+ },
113
+ fitHeight: fitHeight,
114
+ fitWidth: fitWidth,
115
+ zIndex: _editorSharedStyles.akEditorFloatingPanelZIndex,
116
+ offset: [offsetX, offsetY],
117
+ allowOutOfBounds: true // required as this popup is child of a parent popup, should be allowed to be out of bound of the parent popup, otherwise horizontal offset is not right
118
+ }, /*#__PURE__*/_react.default.createElement(_uiMenu.ArrowKeyNavigationProvider, {
74
119
  closeOnTab: true,
75
120
  type: _uiMenu.ArrowKeyNavigationType.MENU,
76
121
  onSelection: function onSelection(index) {
@@ -119,5 +164,5 @@ var DropdownMenu = exports.DropdownMenu = function DropdownMenu(_ref) {
119
164
  });
120
165
  }
121
166
  }
122
- }, innerMenu());
167
+ }, innerMenu())));
123
168
  };
@@ -30,12 +30,10 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
30
30
  }
31
31
  var inStickyMode = stickyHeaders === null || stickyHeaders === void 0 ? void 0 : stickyHeaders.sticky;
32
32
  var targetHandleRef = direction === 'row' ? document.querySelector('#drag-handle-button-row') : document.querySelector('#drag-handle-button-column');
33
- var offset = direction === 'row' ? [-9, 6] : [0, -7];
33
+ var offset = direction === 'row' ? [-9, 0] : [0, -7];
34
34
  if (!targetHandleRef || !(editorView.state.selection instanceof _cellSelection.CellSelection)) {
35
35
  return null;
36
36
  }
37
-
38
- // TODO: we will need to adjust the alignment and offset values depending on whether this is a row or column menu.
39
37
  return /*#__PURE__*/_react.default.createElement(_ui.Popup, {
40
38
  alignX: direction === 'row' ? 'right' : undefined,
41
39
  alignY: direction === 'row' ? 'start' : undefined,
@@ -43,7 +41,8 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
43
41
  mountTo: mountPoint,
44
42
  boundariesElement: boundariesElement,
45
43
  scrollableElement: scrollableElement,
46
- fitWidth: _consts.dragMenuDropdownWidth
44
+ fitWidth: _consts.dragMenuDropdownWidth,
45
+ fitHeight: _consts.tablePopupMenuFitHeight
47
46
  // z-index value below is to ensure that this menu is above other floating menu
48
47
  // in table, but below floating dialogs like typeaheads, pickers, etc.
49
48
  // In sticky mode, we want to show the menu above the sticky header
@@ -62,7 +61,12 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
62
61
  targetCellPosition: targetCellPosition,
63
62
  getEditorContainerWidth: getEditorContainerWidth,
64
63
  editorAnalyticsAPI: editorAnalyticsAPI,
65
- pluginConfig: pluginConfig
64
+ pluginConfig: pluginConfig,
65
+ fitWidth: _consts.dragMenuDropdownWidth,
66
+ fitHeight: _consts.tablePopupMenuFitHeight,
67
+ mountPoint: mountPoint,
68
+ boundariesElement: boundariesElement,
69
+ scrollableElement: scrollableElement
66
70
  }));
67
71
  };
68
72
  FloatingDragMenu.displayName = 'FloatingDragMenu';
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.tableToolbarSize = exports.tableToolbarSelectedColor = exports.tableToolbarDeleteColor = exports.tableToolbarColor = exports.tableTextColor = exports.tableScrollbarOffset = exports.tablePadding = exports.tableOverflowShadowWidthWide = exports.tableOverflowShadowWidth = exports.tableMarginFullWidthMode = exports.tableInsertColumnButtonSize = exports.tableInsertColumnButtonOffset = exports.tableHeaderCellBackgroundColor = exports.tableFloatingControlsColor = exports.tableDeleteButtonSize = exports.tableDeleteButtonOffset = exports.tableControlsSpacing = exports.tableCellSelectedDeleteIconColor = exports.tableCellSelectedDeleteIconBackground = exports.tableCellSelectedColor = exports.tableCellHoverDeleteIconColor = exports.tableCellHoverDeleteIconBackground = exports.tableCellDeleteColor = exports.tableCellBackgroundColor = exports.tableBorderSelectedColor = exports.tableBorderRadiusSize = exports.tableBorderDeleteColor = exports.tableBorderColor = exports.stickyRowZIndex = exports.stickyRowOffsetTop = exports.stickyHeaderBorderBottomWidth = exports.rowControlsZIndex = exports.resizeLineWidth = exports.resizeHandlerZIndex = exports.resizeHandlerAreaWidth = exports.lineMarkerSize = exports.lineMarkerOffsetFromColumnControls = exports.layoutButtonSize = exports.insertLineWidth = exports.dropTargetsZIndex = exports.dropTargetExtendedWidth = exports.dragTableInsertColumnButtonSize = exports.dragMenuDropdownWidth = exports.contextualMenuTriggerSize = exports.contextualMenuDropdownWidthDnD = exports.contextualMenuDropdownWidth = exports.columnResizeHandleZIndex = exports.columnControlsZIndex = exports.columnControlsSelectedZIndex = exports.columnControlsDecorationHeight = exports.colorPalletteColumns = exports.TABLE_SNAP_GAP = exports.TABLE_HIGHLIGHT_TOLERANCE = exports.TABLE_HIGHLIGHT_GAP = exports.TABLE_GUIDELINE_VISIBLE_ADJUSTMENT = exports.STICKY_HEADER_TOGGLE_TOLERANCE_MS = void 0;
6
+ exports.tableToolbarSize = exports.tableToolbarSelectedColor = exports.tableToolbarDeleteColor = exports.tableToolbarColor = exports.tableTextColor = exports.tableScrollbarOffset = exports.tablePopupMenuFitHeight = exports.tablePadding = exports.tableOverflowShadowWidthWide = exports.tableOverflowShadowWidth = exports.tableMarginFullWidthMode = exports.tableInsertColumnButtonSize = exports.tableInsertColumnButtonOffset = exports.tableHeaderCellBackgroundColor = exports.tableFloatingControlsColor = exports.tableDeleteButtonSize = exports.tableDeleteButtonOffset = exports.tableControlsSpacing = exports.tableCellSelectedDeleteIconColor = exports.tableCellSelectedDeleteIconBackground = exports.tableCellSelectedColor = exports.tableCellHoverDeleteIconColor = exports.tableCellHoverDeleteIconBackground = exports.tableCellDeleteColor = exports.tableCellBackgroundColor = exports.tableBorderSelectedColor = exports.tableBorderRadiusSize = exports.tableBorderDeleteColor = exports.tableBorderColor = exports.stickyRowZIndex = exports.stickyRowOffsetTop = exports.stickyHeaderBorderBottomWidth = exports.rowControlsZIndex = exports.resizeLineWidth = exports.resizeHandlerZIndex = exports.resizeHandlerAreaWidth = exports.lineMarkerSize = exports.lineMarkerOffsetFromColumnControls = exports.layoutButtonSize = exports.insertLineWidth = exports.dropTargetsZIndex = exports.dropTargetExtendedWidth = exports.dragTableInsertColumnButtonSize = exports.dragMenuDropdownWidth = exports.contextualMenuTriggerSize = exports.contextualMenuDropdownWidthDnD = exports.contextualMenuDropdownWidth = exports.columnResizeHandleZIndex = exports.columnControlsZIndex = exports.columnControlsSelectedZIndex = exports.columnControlsDecorationHeight = exports.colorPalletteColumns = exports.TABLE_SNAP_GAP = exports.TABLE_HIGHLIGHT_TOLERANCE = exports.TABLE_HIGHLIGHT_GAP = exports.TABLE_GUIDELINE_VISIBLE_ADJUSTMENT = exports.STICKY_HEADER_TOGGLE_TOLERANCE_MS = void 0;
7
7
  var _styles = require("@atlaskit/editor-common/styles");
8
8
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
9
9
  var _colors = require("@atlaskit/theme/colors");
@@ -61,6 +61,7 @@ var stickyRowOffsetTop = exports.stickyRowOffsetTop = 8;
61
61
  var stickyHeaderBorderBottomWidth = exports.stickyHeaderBorderBottomWidth = 1;
62
62
  var tableOverflowShadowWidth = exports.tableOverflowShadowWidth = 8;
63
63
  var tableOverflowShadowWidthWide = exports.tableOverflowShadowWidthWide = 32;
64
+ var tablePopupMenuFitHeight = exports.tablePopupMenuFitHeight = 188;
64
65
  var dropTargetsZIndex = exports.dropTargetsZIndex = 14;
65
66
  var TABLE_SNAP_GAP = exports.TABLE_SNAP_GAP = 9;
66
67
  var TABLE_HIGHLIGHT_GAP = exports.TABLE_HIGHLIGHT_GAP = 10;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createTableWithWidth = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _utils = require("@atlaskit/editor-tables/utils");
10
+ var _utils2 = require("../pm-plugins/table-resizing/utils");
11
+ 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; }
12
+ 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; }
13
+ var createTableWithWidth = exports.createTableWithWidth = function createTableWithWidth(isFullWidthModeEnabled, getEditorFeatureFlags, createTableProps) {
14
+ return function (schema) {
15
+ var _ref = getEditorFeatureFlags ? getEditorFeatureFlags() : {},
16
+ _ref$tablePreserveWid = _ref.tablePreserveWidth,
17
+ tablePreserveWidth = _ref$tablePreserveWid === void 0 ? false : _ref$tablePreserveWid;
18
+ if (tablePreserveWidth && isFullWidthModeEnabled) {
19
+ return (0, _utils.createTable)(_objectSpread({
20
+ schema: schema,
21
+ tableWidth: _utils2.TABLE_MAX_WIDTH
22
+ }, createTableProps));
23
+ }
24
+ return (0, _utils.createTable)(_objectSpread({
25
+ schema: schema
26
+ }, createTableProps));
27
+ };
28
+ };
@@ -105,6 +105,12 @@ Object.defineProperty(exports, "createRowInsertLine", {
105
105
  return _decoration.createRowInsertLine;
106
106
  }
107
107
  });
108
+ Object.defineProperty(exports, "createTableWithWidth", {
109
+ enumerable: true,
110
+ get: function get() {
111
+ return _create.createTableWithWidth;
112
+ }
113
+ });
108
114
  Object.defineProperty(exports, "findControlsHoverDecoration", {
109
115
  enumerable: true,
110
116
  get: function get() {
@@ -445,4 +451,5 @@ var _rowControls = require("./row-controls");
445
451
  var _analytics = require("./analytics");
446
452
  var _table = require("./table");
447
453
  var _updatePluginStateDecorations = require("./update-plugin-state-decorations");
448
- var _mergedCells = require("./merged-cells");
454
+ var _mergedCells = require("./merged-cells");
455
+ var _create = require("./create");
@@ -4,12 +4,12 @@ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, TABLE_OVERFLOW_C
4
4
  import { Selection } from '@atlaskit/editor-prosemirror/state';
5
5
  import { safeInsert } from '@atlaskit/editor-prosemirror/utils';
6
6
  import { TableMap } from '@atlaskit/editor-tables/table-map';
7
- import { addColumnAt as addColumnAtPMUtils, addRowAt, createTable as createTableNode, findTable, selectedRect } from '@atlaskit/editor-tables/utils';
7
+ import { addColumnAt as addColumnAtPMUtils, addRowAt, findTable, selectedRect } from '@atlaskit/editor-tables/utils';
8
8
  import { getBooleanFF } from '@atlaskit/platform-feature-flags';
9
9
  import { updateRowOrColumnMovedTransform } from '../pm-plugins/analytics/commands';
10
10
  import { META_KEYS } from '../pm-plugins/table-analytics';
11
11
  import { rescaleColumns } from '../transforms/column-width';
12
- import { checkIfHeaderRowEnabled, copyPreviousRow } from '../utils';
12
+ import { checkIfHeaderRowEnabled, copyPreviousRow, createTableWithWidth } from '../utils';
13
13
  import { getAllowAddColumnCustomStep } from '../utils/get-allow-add-column-custom-step';
14
14
  function addColumnAtCustomStep(column) {
15
15
  return tr => {
@@ -74,8 +74,6 @@ export const addColumnAfter = getEditorContainerWidth => (state, dispatch, view)
74
74
  }
75
75
  return true;
76
76
  };
77
-
78
- // #region Commands
79
77
  export const insertColumn = getEditorContainerWidth => column => (state, dispatch, view) => {
80
78
  let tr = addColumnAt(getEditorContainerWidth)(column, getAllowAddColumnCustomStep(state), view)(state.tr);
81
79
  const table = findTable(tr.selection);
@@ -124,26 +122,21 @@ export const insertRow = (row, moveCursorToTheNewRow) => (state, dispatch) => {
124
122
  }
125
123
  return true;
126
124
  };
127
- export const createTable = () => (state, dispatch) => {
128
- const table = createTableNode({
129
- schema: state.schema
130
- });
125
+ export const createTable = (isFullWidthModeEnabled, getEditorFeatureFlags) => (state, dispatch) => {
126
+ const table = createTableWithWidth(isFullWidthModeEnabled, getEditorFeatureFlags)(state.schema);
131
127
  if (dispatch) {
132
128
  dispatch(safeInsert(table)(state.tr).scrollIntoView());
133
129
  }
134
130
  return true;
135
131
  };
136
- // #endregion
137
-
138
- export const insertTableWithSize = editorAnalyticsAPI => (rowsCount, colsCount, inputMethod) => {
132
+ export const insertTableWithSize = (isFullWidthModeEnabled, getEditorFeatureFlags, editorAnalyticsAPI) => (rowsCount, colsCount, inputMethod) => {
139
133
  return ({
140
134
  tr
141
135
  }) => {
142
- const tableNode = createTableNode({
143
- schema: tr.doc.type.schema,
136
+ const tableNode = createTableWithWidth(isFullWidthModeEnabled, getEditorFeatureFlags, {
144
137
  rowsCount: rowsCount,
145
138
  colsCount: colsCount
146
- });
139
+ })(tr.doc.type.schema);
147
140
  const newTr = safeInsert(tableNode)(tr).scrollIntoView();
148
141
  if (inputMethod) {
149
142
  editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent({