@atlaskit/editor-core 187.43.8 → 187.43.12

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 (92) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cjs/labs/next/presets/default.js +2 -2
  3. package/dist/cjs/plugins/index.js +0 -7
  4. package/dist/cjs/plugins/media/nodeviews/mediaSingle.js +1 -1
  5. package/dist/cjs/plugins/media/pm-plugins/main.js +6 -0
  6. package/dist/cjs/plugins/media/toolbar/index.js +3 -5
  7. package/dist/cjs/plugins/tasks-and-decisions/nodeviews/taskItem.js +3 -1
  8. package/dist/cjs/plugins/tasks-and-decisions/pm-plugins/helpers.js +111 -2
  9. package/dist/cjs/plugins/tasks-and-decisions/pm-plugins/main.js +108 -7
  10. package/dist/cjs/plugins/tasks-and-decisions/pm-plugins/types.js +12 -0
  11. package/dist/cjs/version-wrapper.js +1 -1
  12. package/dist/es2019/labs/next/presets/default.js +1 -1
  13. package/dist/es2019/plugins/index.js +0 -1
  14. package/dist/es2019/plugins/media/nodeviews/mediaSingle.js +1 -1
  15. package/dist/es2019/plugins/media/pm-plugins/main.js +6 -0
  16. package/dist/es2019/plugins/media/toolbar/index.js +3 -7
  17. package/dist/es2019/plugins/tasks-and-decisions/nodeviews/taskItem.js +4 -1
  18. package/dist/es2019/plugins/tasks-and-decisions/pm-plugins/helpers.js +121 -1
  19. package/dist/es2019/plugins/tasks-and-decisions/pm-plugins/main.js +113 -5
  20. package/dist/es2019/plugins/tasks-and-decisions/pm-plugins/types.js +5 -0
  21. package/dist/es2019/version-wrapper.js +1 -1
  22. package/dist/esm/labs/next/presets/default.js +1 -1
  23. package/dist/esm/plugins/index.js +0 -1
  24. package/dist/esm/plugins/media/nodeviews/mediaSingle.js +1 -1
  25. package/dist/esm/plugins/media/pm-plugins/main.js +6 -0
  26. package/dist/esm/plugins/media/toolbar/index.js +3 -5
  27. package/dist/esm/plugins/tasks-and-decisions/nodeviews/taskItem.js +3 -1
  28. package/dist/esm/plugins/tasks-and-decisions/pm-plugins/helpers.js +102 -1
  29. package/dist/esm/plugins/tasks-and-decisions/pm-plugins/main.js +106 -5
  30. package/dist/esm/plugins/tasks-and-decisions/pm-plugins/types.js +5 -0
  31. package/dist/esm/version-wrapper.js +1 -1
  32. package/dist/types/plugins/help-dialog/index.d.ts +4 -4
  33. package/dist/types/plugins/index.d.ts +0 -1
  34. package/dist/types/plugins/insert-block/types.d.ts +2 -2
  35. package/dist/types/plugins/media/pm-plugins/main.d.ts +1 -0
  36. package/dist/types/plugins/media/pm-plugins/types.d.ts +1 -0
  37. package/dist/types/plugins/tasks-and-decisions/pm-plugins/helpers.d.ts +23 -1
  38. package/dist/types/plugins/tasks-and-decisions/pm-plugins/types.d.ts +8 -0
  39. package/dist/types/plugins/tasks-and-decisions/ui/Task/index.d.ts +1 -0
  40. package/dist/types/plugins/tasks-and-decisions/ui/Task/task-item-with-providers.d.ts +1 -0
  41. package/dist/types-ts4.5/plugins/help-dialog/index.d.ts +4 -4
  42. package/dist/types-ts4.5/plugins/index.d.ts +0 -1
  43. package/dist/types-ts4.5/plugins/insert-block/types.d.ts +2 -2
  44. package/dist/types-ts4.5/plugins/media/pm-plugins/main.d.ts +1 -0
  45. package/dist/types-ts4.5/plugins/media/pm-plugins/types.d.ts +1 -0
  46. package/dist/types-ts4.5/plugins/tasks-and-decisions/pm-plugins/helpers.d.ts +23 -1
  47. package/dist/types-ts4.5/plugins/tasks-and-decisions/pm-plugins/types.d.ts +8 -0
  48. package/dist/types-ts4.5/plugins/tasks-and-decisions/ui/Task/index.d.ts +1 -0
  49. package/dist/types-ts4.5/plugins/tasks-and-decisions/ui/Task/task-item-with-providers.d.ts +1 -0
  50. package/package.json +7 -6
  51. package/report.api.md +2 -0
  52. package/tmp/api-report-tmp.d.ts +2 -0
  53. package/dist/cjs/plugins/quick-insert/commands.js +0 -44
  54. package/dist/cjs/plugins/quick-insert/index.js +0 -189
  55. package/dist/cjs/plugins/quick-insert/plugin-key.js +0 -9
  56. package/dist/cjs/plugins/quick-insert/search.js +0 -33
  57. package/dist/cjs/plugins/quick-insert/ui/ModalElementBrowser/ModalElementBrowser.js +0 -140
  58. package/dist/cjs/plugins/quick-insert/ui/ModalElementBrowser/categories.js +0 -100
  59. package/dist/cjs/plugins/quick-insert/ui/ModalElementBrowser/index.js +0 -61
  60. package/dist/cjs/plugins/quick-insert/ui/ModalElementBrowser/messages.js +0 -15
  61. package/dist/es2019/plugins/quick-insert/commands.js +0 -29
  62. package/dist/es2019/plugins/quick-insert/index.js +0 -151
  63. package/dist/es2019/plugins/quick-insert/plugin-key.js +0 -2
  64. package/dist/es2019/plugins/quick-insert/search.js +0 -16
  65. package/dist/es2019/plugins/quick-insert/ui/ModalElementBrowser/ModalElementBrowser.js +0 -137
  66. package/dist/es2019/plugins/quick-insert/ui/ModalElementBrowser/categories.js +0 -94
  67. package/dist/es2019/plugins/quick-insert/ui/ModalElementBrowser/index.js +0 -51
  68. package/dist/es2019/plugins/quick-insert/ui/ModalElementBrowser/messages.js +0 -8
  69. package/dist/esm/plugins/quick-insert/commands.js +0 -35
  70. package/dist/esm/plugins/quick-insert/index.js +0 -181
  71. package/dist/esm/plugins/quick-insert/plugin-key.js +0 -2
  72. package/dist/esm/plugins/quick-insert/search.js +0 -25
  73. package/dist/esm/plugins/quick-insert/ui/ModalElementBrowser/ModalElementBrowser.js +0 -128
  74. package/dist/esm/plugins/quick-insert/ui/ModalElementBrowser/categories.js +0 -94
  75. package/dist/esm/plugins/quick-insert/ui/ModalElementBrowser/index.js +0 -50
  76. package/dist/esm/plugins/quick-insert/ui/ModalElementBrowser/messages.js +0 -8
  77. package/dist/types/plugins/quick-insert/commands.d.ts +0 -5
  78. package/dist/types/plugins/quick-insert/index.d.ts +0 -16
  79. package/dist/types/plugins/quick-insert/plugin-key.d.ts +0 -3
  80. package/dist/types/plugins/quick-insert/search.d.ts +0 -5
  81. package/dist/types/plugins/quick-insert/ui/ModalElementBrowser/ModalElementBrowser.d.ts +0 -18
  82. package/dist/types/plugins/quick-insert/ui/ModalElementBrowser/categories.d.ts +0 -5
  83. package/dist/types/plugins/quick-insert/ui/ModalElementBrowser/index.d.ts +0 -11
  84. package/dist/types/plugins/quick-insert/ui/ModalElementBrowser/messages.d.ts +0 -7
  85. package/dist/types-ts4.5/plugins/quick-insert/commands.d.ts +0 -5
  86. package/dist/types-ts4.5/plugins/quick-insert/index.d.ts +0 -16
  87. package/dist/types-ts4.5/plugins/quick-insert/plugin-key.d.ts +0 -3
  88. package/dist/types-ts4.5/plugins/quick-insert/search.d.ts +0 -5
  89. package/dist/types-ts4.5/plugins/quick-insert/ui/ModalElementBrowser/ModalElementBrowser.d.ts +0 -18
  90. package/dist/types-ts4.5/plugins/quick-insert/ui/ModalElementBrowser/categories.d.ts +0 -5
  91. package/dist/types-ts4.5/plugins/quick-insert/ui/ModalElementBrowser/index.d.ts +0 -11
  92. package/dist/types-ts4.5/plugins/quick-insert/ui/ModalElementBrowser/messages.d.ts +0 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @atlaskit/editor-core
2
2
 
3
+ ## 187.43.12
4
+
5
+ ### Patch Changes
6
+
7
+ - [`621b904a076`](https://bitbucket.org/atlassian/atlassian-frontend/commits/621b904a076) - ED-19729 fix behaviour of image floating toolbar layout
8
+
9
+ ## 187.43.11
10
+
11
+ ### Patch Changes
12
+
13
+ - [`65b155b2787`](https://bitbucket.org/atlassian/atlassian-frontend/commits/65b155b2787) - [ux] ED-19172: Updated tableHeaderCellBackgroundColor to use non-transparent token."
14
+ - [`96f4e9fe6de`](https://bitbucket.org/atlassian/atlassian-frontend/commits/96f4e9fe6de) - [ux] ECA11Y-1 Added keyboard support to focus checkbox, check or uncheck, inside action item
15
+ - [`9131a0a2ffa`](https://bitbucket.org/atlassian/atlassian-frontend/commits/9131a0a2ffa) - Extract quick-insert plugin from @atlaskit/editor-core to @atlaskit/editor-plugin-quick-insert.
16
+ - Updated dependencies
17
+
3
18
  ## 187.43.8
4
19
 
5
20
  ### Patch Changes
@@ -27,7 +27,7 @@ var _editorPluginAnalytics = require("@atlaskit/editor-plugin-analytics");
27
27
  var _editorPluginPlaceholder = require("@atlaskit/editor-plugin-placeholder");
28
28
  var _annotation = _interopRequireDefault(require("../../../plugins/annotation"));
29
29
  var _editorPluginComposition = require("@atlaskit/editor-plugin-composition");
30
- var _quickInsert = _interopRequireDefault(require("../../../plugins/quick-insert"));
30
+ var _editorPluginQuickInsert = require("@atlaskit/editor-plugin-quick-insert");
31
31
  var _selection = _interopRequireDefault(require("../../../plugins/selection"));
32
32
  var _codeBlock = _interopRequireDefault(require("../../../plugins/code-block"));
33
33
  var _undoRedo = _interopRequireDefault(require("../../../plugins/undo-redo"));
@@ -74,7 +74,7 @@ function createDefaultPreset(options) {
74
74
  return builder.add([p, options.annotationProviders]);
75
75
  }
76
76
  return builder;
77
- }).add([_editorPluginHyperlink.hyperlinkPlugin, options.hyperlinkOptions]).add([_editorPluginTextFormatting.textFormattingPlugin, options.textFormatting]).add(_editorPluginWidth.widthPlugin).add([_quickInsert.default, options.quickInsert]).add([_typeAhead.default, options.typeAhead || {
77
+ }).add([_editorPluginHyperlink.hyperlinkPlugin, options.hyperlinkOptions]).add([_editorPluginTextFormatting.textFormattingPlugin, options.textFormatting]).add(_editorPluginWidth.widthPlugin).add([_editorPluginQuickInsert.quickInsertPlugin, options.quickInsert]).add([_typeAhead.default, options.typeAhead || {
78
78
  createAnalyticsEvent: options.createAnalyticsEvent
79
79
  }]).add([_editorPluginPlaceholder.placeholderPlugin, options.placeholder]).add(_editorPluginUnsupportedContent.unsupportedContentPlugin).add(_editorPluginEditorDisabled.editorDisabledPlugin).add([_submitEditor.default, options.submitEditor]).add(_fakeTextCursor.default).add(_floatingToolbar.default).add([_selection.default, options.selection]).add([_codeBlock.default, options.codeBlock || {
80
80
  appearance: 'full-page'
@@ -257,12 +257,6 @@ Object.defineProperty(exports, "placeholderTextPlugin", {
257
257
  return _placeholderText.default;
258
258
  }
259
259
  });
260
- Object.defineProperty(exports, "quickInsertPlugin", {
261
- enumerable: true,
262
- get: function get() {
263
- return _quickInsert.default;
264
- }
265
- });
266
260
  Object.defineProperty(exports, "saveOnEnterPlugin", {
267
261
  enumerable: true,
268
262
  get: function get() {
@@ -349,7 +343,6 @@ var _mentions = _interopRequireDefault(require("./mentions"));
349
343
  var _panel = _interopRequireDefault(require("./panel"));
350
344
  var _paste = _interopRequireDefault(require("./paste"));
351
345
  var _placeholderText = _interopRequireDefault(require("./placeholder-text"));
352
- var _quickInsert = _interopRequireDefault(require("./quick-insert"));
353
346
  var _saveOnEnter = _interopRequireDefault(require("./save-on-enter"));
354
347
  var _submitEditor = _interopRequireDefault(require("./submit-editor"));
355
348
  var _tasksAndDecisions = _interopRequireDefault(require("./tasks-and-decisions"));
@@ -366,7 +366,7 @@ var MediaSingleNode = /*#__PURE__*/function (_Component) {
366
366
  origWidth: width,
367
367
  layout: layout,
368
368
  // This will only be used when calculating legacy media single width
369
- // thus we use the legecy value (exclude table as container node)
369
+ // thus we use the legacy value (exclude table as container node)
370
370
  contentWidth: contentWidthForLegacyExperience,
371
371
  containerWidth: containerWidth,
372
372
  gutterOffset: _mediaSingle.MEDIA_SINGLE_GUTTER_SIZE
@@ -41,6 +41,7 @@ var _CaptionPlaceholder = require("../ui/CaptionPlaceholder");
41
41
  var _reactIntlNext = require("react-intl-next");
42
42
  var _mediaTaskManager = require("./mediaTaskManager");
43
43
  var _cellSelection = require("@atlaskit/editor-tables/cell-selection");
44
+ var _mediaSingle2 = require("@atlaskit/editor-common/media-single");
44
45
  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); }
45
46
  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; }
46
47
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
@@ -515,6 +516,11 @@ var MediaPluginStateImplementation = /*#__PURE__*/function () {
515
516
  var selectedContainer = this.selectedMediaContainerNode();
516
517
  if (selectedContainer && this.isMediaSchemaNode(selectedContainer)) {
517
518
  newElement = this.getDomElement(this.view.domAtPos.bind(this.view));
519
+ if (selectedContainer.type === this.view.state.schema.nodes.mediaSingle) {
520
+ this.currentMaxWidth = (0, _mediaSingle2.getMaxWidthForNestedNodeNext)(this.view, this.view.state.selection.$anchor.pos) || undefined;
521
+ } else {
522
+ this.currentMaxWidth = undefined;
523
+ }
518
524
  }
519
525
  if (this.element !== newElement) {
520
526
  this.element = newElement;
@@ -246,11 +246,9 @@ var generateMediaSingleFloatingToolbar = function generateMediaSingleFloatingToo
246
246
  var _widthPlugin$sharedSt;
247
247
  var contentWidth = widthPlugin === null || widthPlugin === void 0 ? void 0 : (_widthPlugin$sharedSt = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt === void 0 ? void 0 : _widthPlugin$sharedSt.lineLength;
248
248
  var selectedNode = (0, _utils2.getSelectedMediaSingle)(state);
249
- if (selectedNode && contentWidth) {
250
- var width = selectedNode.node.attrs.width;
251
- if (width >= contentWidth) {
252
- isChangingLayoutDisabled = true;
253
- }
249
+ var selectedNodeMaxWidth = pluginState.currentMaxWidth || contentWidth;
250
+ if (selectedNode && selectedNodeMaxWidth && selectedNode.node.attrs.width >= selectedNodeMaxWidth) {
251
+ isChangingLayoutDisabled = true;
254
252
  }
255
253
  }
256
254
  var layoutButtons = (0, _card.buildLayoutButtons)(state, intl, state.schema.nodes.mediaSingle, widthPlugin, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a3 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a3 === void 0 ? void 0 : _pluginInjectionApi$a3.actions, allowResizing, allowResizingInTables, true, true, isChangingLayoutDisabled);
@@ -131,12 +131,14 @@ var Task = /*#__PURE__*/function (_ReactNodeView) {
131
131
  plugins: {
132
132
  taskDecisionPlugin: _pluginKey.stateKey
133
133
  },
134
- render: function render() {
134
+ render: function render(_ref) {
135
+ var taskDecisionPlugin = _ref.taskDecisionPlugin;
135
136
  return /*#__PURE__*/_react.default.createElement(_Task.default, {
136
137
  taskId: localId,
137
138
  contentRef: forwardRef,
138
139
  isDone: state === 'DONE',
139
140
  onChange: _this2.handleOnChange,
141
+ isFocused: (taskDecisionPlugin === null || taskDecisionPlugin === void 0 ? void 0 : taskDecisionPlugin.focusedTaskItemLocalId) === localId,
140
142
  showPlaceholder: _this2.isContentEmpty(_this2.node) && !(0, _utils.isTypeAheadOpen)(_this2.view.state),
141
143
  providers: props.providerFactory
142
144
  });
@@ -3,10 +3,21 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.walkOut = exports.subtreeHeight = exports.liftBlock = exports.isTable = exports.isInsideTaskOrDecisionItem = exports.isInsideTask = exports.isInsideDecision = exports.isEmptyTaskDecision = exports.isActionOrDecisionList = exports.isActionOrDecisionItem = exports.getTaskItemIndex = exports.getCurrentIndentLevel = exports.getBlockRange = void 0;
6
+ exports.focusCheckboxAndUpdateSelection = focusCheckboxAndUpdateSelection;
7
+ exports.getAllTaskItemsDataInRootTaskList = getAllTaskItemsDataInRootTaskList;
8
+ exports.getCurrentIndentLevel = exports.getBlockRange = void 0;
9
+ exports.getCurrentTaskItemIndex = getCurrentTaskItemIndex;
10
+ exports.getTaskItemDataAtPos = getTaskItemDataAtPos;
11
+ exports.getTaskItemDataToFocus = getTaskItemDataToFocus;
12
+ exports.liftBlock = exports.isTable = exports.isInsideTaskOrDecisionItem = exports.isInsideTask = exports.isInsideDecision = exports.isEmptyTaskDecision = exports.isActionOrDecisionList = exports.isActionOrDecisionItem = exports.getTaskItemIndex = void 0;
13
+ exports.removeCheckboxFocus = removeCheckboxFocus;
14
+ exports.walkOut = exports.subtreeHeight = void 0;
15
+ var _state = require("@atlaskit/editor-prosemirror/state");
7
16
  var _transform = require("@atlaskit/editor-prosemirror/transform");
8
17
  var _utils = require("@atlaskit/editor-prosemirror/utils");
9
18
  var _utils2 = require("../../../utils");
19
+ var _pluginKey = require("./plugin-key");
20
+ var _types = require("./types");
10
21
  var isInsideTaskOrDecisionItem = function isInsideTaskOrDecisionItem(state) {
11
22
  var _state$schema$nodes = state.schema.nodes,
12
23
  decisionItem = _state$schema$nodes.decisionItem,
@@ -200,4 +211,102 @@ var liftBlock = function liftBlock(tr, $from, $to) {
200
211
  }
201
212
  return tr.lift(blockRange, target).scrollIntoView();
202
213
  };
203
- exports.liftBlock = liftBlock;
214
+ exports.liftBlock = liftBlock;
215
+ function getTaskItemDataAtPos(view) {
216
+ var state = view.state;
217
+ var selection = state.selection,
218
+ schema = state.schema;
219
+ var $from = selection.$from;
220
+ var isInTaskItem = $from.node().type === schema.nodes.taskItem;
221
+
222
+ // current selection has to be inside taskitem
223
+ if (isInTaskItem) {
224
+ var taskItemPos = $from.before();
225
+ return {
226
+ pos: taskItemPos,
227
+ localId: $from.node().attrs.localId
228
+ };
229
+ }
230
+ }
231
+ function getAllTaskItemsDataInRootTaskList(view) {
232
+ var state = view.state;
233
+ var schema = state.schema;
234
+ var $fromPos = state.selection.$from;
235
+ var isInTaskItem = $fromPos.node().type === schema.nodes.taskItem;
236
+ // if not inside task item then return undefined;
237
+ if (!isInTaskItem) {
238
+ return;
239
+ }
240
+ var _schema$nodes = schema.nodes,
241
+ taskList = _schema$nodes.taskList,
242
+ taskItem = _schema$nodes.taskItem;
243
+ var rootTaskListData = (0, _utils2.findFarthestParentNode)(function (node) {
244
+ return node.type === taskList;
245
+ })($fromPos);
246
+ if (rootTaskListData) {
247
+ var rootTaskList = rootTaskListData.node;
248
+ var rootTaskListStartPos = rootTaskListData.start;
249
+ var allTaskItems = [];
250
+ rootTaskList.descendants(function (node, pos, parent, index) {
251
+ if (node.type === taskItem) {
252
+ allTaskItems.push({
253
+ node: node,
254
+ pos: pos + rootTaskListStartPos,
255
+ index: index
256
+ });
257
+ }
258
+ });
259
+ return allTaskItems;
260
+ }
261
+ }
262
+ function getCurrentTaskItemIndex(view, allTaskItems) {
263
+ var state = view.state;
264
+ var $fromPos = state.selection.$from;
265
+ var allTaskItemNodes = allTaskItems.map(function (nodeData) {
266
+ return nodeData.node;
267
+ });
268
+ var currentTaskItem = $fromPos.node($fromPos.depth);
269
+ var currentTaskItemIndex = allTaskItemNodes.indexOf(currentTaskItem);
270
+ return currentTaskItemIndex;
271
+ }
272
+ function getTaskItemDataToFocus(view, direction) {
273
+ var allTaskItems = getAllTaskItemsDataInRootTaskList(view);
274
+ // if not inside task item then allTaskItems will be undefined;
275
+ if (!allTaskItems) {
276
+ return;
277
+ }
278
+ var currentTaskItemIndex = getCurrentTaskItemIndex(view, allTaskItems);
279
+ if (direction === 'next' ? currentTaskItemIndex === allTaskItems.length - 1 : currentTaskItemIndex === 0) {
280
+ // checkbox of first or last task item is already focused based on direction.
281
+ return;
282
+ }
283
+ var indexOfTaskItemToFocus = direction === 'next' ? currentTaskItemIndex + 1 : currentTaskItemIndex - 1;
284
+ var taskItemToFocus = allTaskItems[indexOfTaskItemToFocus];
285
+ return {
286
+ pos: taskItemToFocus.pos,
287
+ localId: taskItemToFocus.node.attrs.localId
288
+ };
289
+ }
290
+ function focusCheckboxAndUpdateSelection(view, taskItemData) {
291
+ var pos = taskItemData.pos,
292
+ localId = taskItemData.localId;
293
+ var state = view.state,
294
+ dispatch = view.dispatch;
295
+ var doc = state.doc,
296
+ tr = state.tr;
297
+ tr.setSelection(new _state.TextSelection(doc.resolve(pos + 1)));
298
+ tr.setMeta(_pluginKey.stateKey, {
299
+ action: _types.ACTIONS.FOCUS_BY_LOCALID,
300
+ data: localId
301
+ });
302
+ dispatch(tr);
303
+ }
304
+ function removeCheckboxFocus(view) {
305
+ var state = view.state,
306
+ dispatch = view.dispatch;
307
+ var tr = state.tr;
308
+ view.focus();
309
+ dispatch(tr.setMeta(_pluginKey.stateKey, {
310
+ action: _types.ACTIONS.FOCUS_BY_LOCALID
311
+ }));
312
+ }
@@ -15,18 +15,17 @@ var _utils2 = require("../../selection/utils");
15
15
  var _decisionItem = require("../nodeviews/decisionItem");
16
16
  var _taskItem = require("../nodeviews/taskItem");
17
17
  var _pluginKey = require("./plugin-key");
18
+ var _helpers = require("./helpers");
19
+ var _selection = require("@atlaskit/editor-common/selection");
20
+ var _types = require("./types");
18
21
  var _excluded = ["localId"];
19
22
  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; }
20
23
  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; }
21
- var ACTIONS = /*#__PURE__*/function (ACTIONS) {
22
- ACTIONS[ACTIONS["SET_CONTEXT_PROVIDER"] = 0] = "SET_CONTEXT_PROVIDER";
23
- return ACTIONS;
24
- }(ACTIONS || {});
25
24
  var setContextIdentifierProvider = function setContextIdentifierProvider(provider) {
26
25
  return function (state, dispatch) {
27
26
  if (dispatch) {
28
27
  dispatch(state.tr.setMeta(_pluginKey.stateKey, {
29
- action: ACTIONS.SET_CONTEXT_PROVIDER,
28
+ action: _types.ACTIONS.SET_CONTEXT_PROVIDER,
30
29
  data: provider
31
30
  }));
32
31
  }
@@ -67,7 +66,104 @@ function createPlugin(portalProviderAPI, eventDispatcher, providerFactory, dispa
67
66
  return target.hasAttribute('data-decision-wrapper') || target.getAttribute('aria-label') === 'Decision';
68
67
  }, {
69
68
  useLongPressSelection: useLongPressSelection
70
- })
69
+ }),
70
+ handleKeyDown: function handleKeyDown(view, event) {
71
+ var state = view.state,
72
+ dispatch = view.dispatch;
73
+ var selection = state.selection,
74
+ schema = state.schema;
75
+ var $from = selection.$from,
76
+ $to = selection.$to;
77
+ var parentOffset = $from.parentOffset;
78
+ var isInTaskItem = $from.node().type === schema.nodes.taskItem;
79
+ var focusedTaskItemLocalId = _pluginKey.stateKey.getState(state).focusedTaskItemLocalId;
80
+ var currentTaskItemData = (0, _helpers.getTaskItemDataAtPos)(view);
81
+ var currentTaskItemFocused = focusedTaskItemLocalId === (currentTaskItemData === null || currentTaskItemData === void 0 ? void 0 : currentTaskItemData.localId);
82
+
83
+ // if task item checkbox not focused and arrow key is not pressed
84
+ // then we don't want to handle event.
85
+ if (!['ArrowUp', 'ArrowDown', 'ArrowRight', 'ArrowLeft'].includes(event.key)) {
86
+ return false;
87
+ }
88
+
89
+ // We want to handle arrow up, down and left key only
90
+ // when selection is inside task item and no text is selected.
91
+ if (['ArrowUp', 'ArrowDown', 'ArrowLeft'].includes(event.key) && (!isInTaskItem || $from.pos !== $to.pos)) {
92
+ return false;
93
+ }
94
+
95
+ // Arrow keys are pressed and shift, ctrl or meta is pressed as well.
96
+ // along with arrow keys and task item checkbox is focused
97
+ // then first move focus to view and proceed with default event handling.
98
+ if (event.shiftKey || event.ctrlKey || event.metaKey) {
99
+ currentTaskItemFocused && (0, _helpers.removeCheckboxFocus)(view);
100
+ return false;
101
+ }
102
+
103
+ // task item checkbox is already focused
104
+ if (focusedTaskItemLocalId) {
105
+ if (event.key === 'ArrowLeft') {
106
+ // Move focus to view and proceed with default keyboard handler.
107
+ // Which will move cursor to previous position.
108
+ (0, _helpers.removeCheckboxFocus)(view);
109
+ return false;
110
+ }
111
+ if (event.key === 'ArrowRight') {
112
+ // Move focus to view and DON'T proceed with default handler.
113
+ // We have assumed that selection is already before first character of task item.
114
+ (0, _helpers.removeCheckboxFocus)(view);
115
+ return true;
116
+ }
117
+ if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
118
+ var taskItemData = (0, _helpers.getTaskItemDataToFocus)(view, event.key === 'ArrowUp' ? 'previous' : 'next');
119
+ if (taskItemData) {
120
+ (0, _helpers.focusCheckboxAndUpdateSelection)(view, taskItemData);
121
+ return true;
122
+ } else {
123
+ // If any how checkbox input not found, then move focus to view
124
+ // and proceed with default keyboard handler.
125
+ (0, _helpers.removeCheckboxFocus)(view);
126
+ return false;
127
+ }
128
+ }
129
+ }
130
+
131
+ // If left arrow key is pressed and cursor is at first position in task-item
132
+ // then focus checkbox and DON'T proceed with default keyboard handler
133
+ if (event.key === 'ArrowLeft' && parentOffset === 0) {
134
+ // here we are not using focusCheckboxAndUpdateSelection() method
135
+ // because it is working incorretly when we are placing is inside the nested items
136
+ dispatch(state.tr.setMeta(_pluginKey.stateKey, {
137
+ action: _types.ACTIONS.FOCUS_BY_LOCALID,
138
+ data: currentTaskItemData === null || currentTaskItemData === void 0 ? void 0 : currentTaskItemData.localId
139
+ }));
140
+ return true;
141
+ }
142
+ if (event.key === 'ArrowRight') {
143
+ var _$from$nodeAfter;
144
+ // If gap cursor is just before task list then focus first task item in list.
145
+ if (selection instanceof _selection.GapCursorSelection && selection.side === 'left' && ((_$from$nodeAfter = $from.nodeAfter) === null || _$from$nodeAfter === void 0 ? void 0 : _$from$nodeAfter.type) === schema.nodes.taskList) {
146
+ var taskList = $from.nodeAfter;
147
+ var firstTaskItemNode = taskList.child(0);
148
+ var taskItemPos = $from.pos + 1;
149
+ (0, _helpers.focusCheckboxAndUpdateSelection)(view, {
150
+ pos: taskItemPos,
151
+ localId: firstTaskItemNode.attrs.localId
152
+ });
153
+ return true;
154
+ }
155
+ // if cursor is at then end of task item text then focus next task item checkbox
156
+ else if (isInTaskItem && $from.node().content.size === parentOffset) {
157
+ var nextTaskItemData = (0, _helpers.getTaskItemDataToFocus)(view, 'next');
158
+ if (nextTaskItemData) {
159
+ (0, _helpers.focusCheckboxAndUpdateSelection)(view, nextTaskItemData);
160
+ return true;
161
+ }
162
+ } else {
163
+ return false;
164
+ }
165
+ }
166
+ }
71
167
  },
72
168
  state: {
73
169
  init: function init() {
@@ -84,11 +180,16 @@ function createPlugin(portalProviderAPI, eventDispatcher, providerFactory, dispa
84
180
  data = _ref.data;
85
181
  var newPluginState = pluginState;
86
182
  switch (action) {
87
- case ACTIONS.SET_CONTEXT_PROVIDER:
183
+ case _types.ACTIONS.SET_CONTEXT_PROVIDER:
88
184
  newPluginState = _objectSpread(_objectSpread({}, pluginState), {}, {
89
185
  contextIdentifierProvider: data
90
186
  });
91
187
  break;
188
+ case _types.ACTIONS.FOCUS_BY_LOCALID:
189
+ newPluginState = _objectSpread(_objectSpread({}, pluginState), {}, {
190
+ focusedTaskItemLocalId: data
191
+ });
192
+ break;
92
193
  }
93
194
  dispatch(_pluginKey.stateKey, newPluginState);
94
195
  return newPluginState;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ACTIONS = void 0;
7
+ var ACTIONS = /*#__PURE__*/function (ACTIONS) {
8
+ ACTIONS[ACTIONS["SET_CONTEXT_PROVIDER"] = 0] = "SET_CONTEXT_PROVIDER";
9
+ ACTIONS[ACTIONS["FOCUS_BY_LOCALID"] = 1] = "FOCUS_BY_LOCALID";
10
+ return ACTIONS;
11
+ }({});
12
+ exports.ACTIONS = ACTIONS;
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.version = exports.nextMajorVersion = exports.name = void 0;
7
7
  var name = "@atlaskit/editor-core";
8
8
  exports.name = name;
9
- var version = "187.43.8";
9
+ var version = "187.43.12";
10
10
  exports.version = version;
11
11
  var nextMajorVersion = function nextMajorVersion() {
12
12
  return [Number(version.split('.')[0]) + 1, 0, 0].join('.');
@@ -21,7 +21,7 @@ import { analyticsPlugin } from '@atlaskit/editor-plugin-analytics';
21
21
  import { placeholderPlugin } from '@atlaskit/editor-plugin-placeholder';
22
22
  import annotationPlugin from '../../../plugins/annotation';
23
23
  import { compositionPlugin } from '@atlaskit/editor-plugin-composition';
24
- import quickInsertPlugin from '../../../plugins/quick-insert';
24
+ import { quickInsertPlugin } from '@atlaskit/editor-plugin-quick-insert';
25
25
  import selectionPlugin from '../../../plugins/selection';
26
26
  import codeBlockPlugin from '../../../plugins/code-block';
27
27
  import undoRedoPlugin from '../../../plugins/undo-redo';
@@ -18,7 +18,6 @@ export { default as mentionsPlugin } from './mentions';
18
18
  export { default as panelPlugin } from './panel';
19
19
  export { default as pastePlugin } from './paste';
20
20
  export { default as placeholderTextPlugin } from './placeholder-text';
21
- export { default as quickInsertPlugin } from './quick-insert';
22
21
  export { default as saveOnEnterPlugin } from './save-on-enter';
23
22
  export { default as submitEditorPlugin } from './submit-editor';
24
23
  export { default as tasksAndDecisionsPlugin } from './tasks-and-decisions';
@@ -273,7 +273,7 @@ export default class MediaSingleNode extends Component {
273
273
  origWidth: width,
274
274
  layout,
275
275
  // This will only be used when calculating legacy media single width
276
- // thus we use the legecy value (exclude table as container node)
276
+ // thus we use the legacy value (exclude table as container node)
277
277
  contentWidth: contentWidthForLegacyExperience,
278
278
  containerWidth,
279
279
  gutterOffset: MEDIA_SINGLE_GUTTER_SIZE
@@ -24,6 +24,7 @@ import { CAPTION_PLACEHOLDER_ID } from '../ui/CaptionPlaceholder';
24
24
  import { RawIntlProvider } from 'react-intl-next';
25
25
  import { MediaTaskManager } from './mediaTaskManager';
26
26
  import { CellSelection } from '@atlaskit/editor-tables/cell-selection';
27
+ import { getMaxWidthForNestedNodeNext } from '@atlaskit/editor-common/media-single';
27
28
  export { stateKey } from './plugin-key';
28
29
  export const MEDIA_CONTENT_WRAP_CLASS_NAME = 'media-content-wrap';
29
30
  export const MEDIA_PLUGIN_IS_RESIZING_KEY = 'mediaSinglePlugin.isResizing';
@@ -437,6 +438,11 @@ export class MediaPluginStateImplementation {
437
438
  const selectedContainer = this.selectedMediaContainerNode();
438
439
  if (selectedContainer && this.isMediaSchemaNode(selectedContainer)) {
439
440
  newElement = this.getDomElement(this.view.domAtPos.bind(this.view));
441
+ if (selectedContainer.type === this.view.state.schema.nodes.mediaSingle) {
442
+ this.currentMaxWidth = getMaxWidthForNestedNodeNext(this.view, this.view.state.selection.$anchor.pos) || undefined;
443
+ } else {
444
+ this.currentMaxWidth = undefined;
445
+ }
440
446
  }
441
447
  if (this.element !== newElement) {
442
448
  this.element = newElement;
@@ -246,13 +246,9 @@ const generateMediaSingleFloatingToolbar = (state, intl, options, pluginState, m
246
246
  var _widthPlugin$sharedSt;
247
247
  const contentWidth = widthPlugin === null || widthPlugin === void 0 ? void 0 : (_widthPlugin$sharedSt = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt === void 0 ? void 0 : _widthPlugin$sharedSt.lineLength;
248
248
  const selectedNode = getSelectedMediaSingle(state);
249
- if (selectedNode && contentWidth) {
250
- const {
251
- width
252
- } = selectedNode.node.attrs;
253
- if (width >= contentWidth) {
254
- isChangingLayoutDisabled = true;
255
- }
249
+ const selectedNodeMaxWidth = pluginState.currentMaxWidth || contentWidth;
250
+ if (selectedNode && selectedNodeMaxWidth && selectedNode.node.attrs.width >= selectedNodeMaxWidth) {
251
+ isChangingLayoutDisabled = true;
256
252
  }
257
253
  }
258
254
  const layoutButtons = buildLayoutButtons(state, intl, state.schema.nodes.mediaSingle, widthPlugin, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a3 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a3 === void 0 ? void 0 : _pluginInjectionApi$a3.actions, allowResizing, allowResizingInTables, true, true, isChangingLayoutDisabled);
@@ -102,12 +102,15 @@ class Task extends ReactNodeView {
102
102
  plugins: {
103
103
  taskDecisionPlugin: taskPluginKey
104
104
  },
105
- render: () => {
105
+ render: ({
106
+ taskDecisionPlugin
107
+ }) => {
106
108
  return /*#__PURE__*/React.createElement(TaskItem, {
107
109
  taskId: localId,
108
110
  contentRef: forwardRef,
109
111
  isDone: state === 'DONE',
110
112
  onChange: this.handleOnChange,
113
+ isFocused: (taskDecisionPlugin === null || taskDecisionPlugin === void 0 ? void 0 : taskDecisionPlugin.focusedTaskItemLocalId) === localId,
111
114
  showPlaceholder: this.isContentEmpty(this.node) && !isTypeAheadOpen(this.view.state),
112
115
  providers: props.providerFactory
113
116
  });
@@ -1,6 +1,9 @@
1
+ import { TextSelection } from '@atlaskit/editor-prosemirror/state';
1
2
  import { liftTarget } from '@atlaskit/editor-prosemirror/transform';
2
3
  import { findParentNodeClosestToPos, hasParentNodeOfType } from '@atlaskit/editor-prosemirror/utils';
3
4
  import { findFarthestParentNode } from '../../../utils';
5
+ import { stateKey } from './plugin-key';
6
+ import { ACTIONS } from './types';
4
7
  export const isInsideTaskOrDecisionItem = state => {
5
8
  const {
6
9
  decisionItem,
@@ -193,4 +196,121 @@ export const liftBlock = (tr, $from, $to) => {
193
196
  return null;
194
197
  }
195
198
  return tr.lift(blockRange, target).scrollIntoView();
196
- };
199
+ };
200
+ export function getTaskItemDataAtPos(view) {
201
+ const {
202
+ state
203
+ } = view;
204
+ const {
205
+ selection,
206
+ schema
207
+ } = state;
208
+ const {
209
+ $from
210
+ } = selection;
211
+ const isInTaskItem = $from.node().type === schema.nodes.taskItem;
212
+
213
+ // current selection has to be inside taskitem
214
+ if (isInTaskItem) {
215
+ const taskItemPos = $from.before();
216
+ return {
217
+ pos: taskItemPos,
218
+ localId: $from.node().attrs.localId
219
+ };
220
+ }
221
+ }
222
+ export function getAllTaskItemsDataInRootTaskList(view) {
223
+ const {
224
+ state
225
+ } = view;
226
+ const {
227
+ schema
228
+ } = state;
229
+ const $fromPos = state.selection.$from;
230
+ const isInTaskItem = $fromPos.node().type === schema.nodes.taskItem;
231
+ // if not inside task item then return undefined;
232
+ if (!isInTaskItem) {
233
+ return;
234
+ }
235
+ const {
236
+ taskList,
237
+ taskItem
238
+ } = schema.nodes;
239
+ const rootTaskListData = findFarthestParentNode(node => node.type === taskList)($fromPos);
240
+ if (rootTaskListData) {
241
+ const rootTaskList = rootTaskListData.node;
242
+ const rootTaskListStartPos = rootTaskListData.start;
243
+ const allTaskItems = [];
244
+ rootTaskList.descendants((node, pos, parent, index) => {
245
+ if (node.type === taskItem) {
246
+ allTaskItems.push({
247
+ node,
248
+ pos: pos + rootTaskListStartPos,
249
+ index
250
+ });
251
+ }
252
+ });
253
+ return allTaskItems;
254
+ }
255
+ }
256
+ export function getCurrentTaskItemIndex(view, allTaskItems) {
257
+ const {
258
+ state
259
+ } = view;
260
+ const $fromPos = state.selection.$from;
261
+ const allTaskItemNodes = allTaskItems.map(nodeData => nodeData.node);
262
+ const currentTaskItem = $fromPos.node($fromPos.depth);
263
+ const currentTaskItemIndex = allTaskItemNodes.indexOf(currentTaskItem);
264
+ return currentTaskItemIndex;
265
+ }
266
+ export function getTaskItemDataToFocus(view, direction) {
267
+ const allTaskItems = getAllTaskItemsDataInRootTaskList(view);
268
+ // if not inside task item then allTaskItems will be undefined;
269
+ if (!allTaskItems) {
270
+ return;
271
+ }
272
+ const currentTaskItemIndex = getCurrentTaskItemIndex(view, allTaskItems);
273
+ if (direction === 'next' ? currentTaskItemIndex === allTaskItems.length - 1 : currentTaskItemIndex === 0) {
274
+ // checkbox of first or last task item is already focused based on direction.
275
+ return;
276
+ }
277
+ const indexOfTaskItemToFocus = direction === 'next' ? currentTaskItemIndex + 1 : currentTaskItemIndex - 1;
278
+ const taskItemToFocus = allTaskItems[indexOfTaskItemToFocus];
279
+ return {
280
+ pos: taskItemToFocus.pos,
281
+ localId: taskItemToFocus.node.attrs.localId
282
+ };
283
+ }
284
+ export function focusCheckboxAndUpdateSelection(view, taskItemData) {
285
+ const {
286
+ pos,
287
+ localId
288
+ } = taskItemData;
289
+ const {
290
+ state,
291
+ dispatch
292
+ } = view;
293
+ const {
294
+ doc,
295
+ tr
296
+ } = state;
297
+ tr.setSelection(new TextSelection(doc.resolve(pos + 1)));
298
+ tr.setMeta(stateKey, {
299
+ action: ACTIONS.FOCUS_BY_LOCALID,
300
+ data: localId
301
+ });
302
+ dispatch(tr);
303
+ }
304
+ export function removeCheckboxFocus(view) {
305
+ const {
306
+ state,
307
+ dispatch
308
+ } = view;
309
+ const {
310
+ tr
311
+ } = state;
312
+ view.focus();
313
+ dispatch(tr.setMeta(stateKey, {
314
+ action: ACTIONS.FOCUS_BY_LOCALID
315
+ }));
316
+ }