@atlaskit/editor-core 187.19.1 → 187.20.1

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 (113) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/cjs/plugins/emoji/commands/insert-emoji.js +21 -20
  3. package/dist/cjs/plugins/emoji/index.js +16 -5
  4. package/dist/cjs/plugins/index.js +2 -2
  5. package/dist/cjs/plugins/insert-block/index.js +3 -7
  6. package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/index.js +4 -3
  7. package/dist/cjs/plugins/media/nodeviews/mediaSingle.js +28 -10
  8. package/dist/cjs/plugins/media/pm-plugins/main.js +13 -1
  9. package/dist/cjs/plugins/media/styles.js +1 -1
  10. package/dist/cjs/plugins/media/toolbar/index.js +21 -8
  11. package/dist/cjs/plugins/media/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +40 -8
  12. package/dist/cjs/plugins/media/utils/media-single.js +21 -2
  13. package/dist/cjs/plugins/text-color/commands/toggle-color.js +3 -2
  14. package/dist/cjs/utils/document.js +6 -24
  15. package/dist/cjs/utils/index.js +33 -105
  16. package/dist/cjs/utils/prosemirror/position.js +33 -41
  17. package/dist/cjs/version-wrapper.js +1 -1
  18. package/dist/cjs/version.json +1 -1
  19. package/dist/es2019/plugins/emoji/commands/insert-emoji.js +24 -20
  20. package/dist/es2019/plugins/emoji/index.js +14 -4
  21. package/dist/es2019/plugins/index.js +1 -1
  22. package/dist/es2019/plugins/insert-block/index.js +3 -7
  23. package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/index.js +6 -3
  24. package/dist/es2019/plugins/media/nodeviews/mediaSingle.js +21 -3
  25. package/dist/es2019/plugins/media/pm-plugins/main.js +9 -0
  26. package/dist/es2019/plugins/media/styles.js +8 -2
  27. package/dist/es2019/plugins/media/toolbar/index.js +22 -10
  28. package/dist/es2019/plugins/media/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +39 -7
  29. package/dist/es2019/plugins/media/utils/media-single.js +21 -2
  30. package/dist/es2019/plugins/text-color/commands/toggle-color.js +3 -2
  31. package/dist/es2019/utils/document.js +1 -20
  32. package/dist/es2019/utils/index.js +1 -99
  33. package/dist/es2019/utils/prosemirror/position.js +1 -51
  34. package/dist/es2019/version-wrapper.js +1 -1
  35. package/dist/es2019/version.json +1 -1
  36. package/dist/esm/plugins/emoji/commands/insert-emoji.js +21 -20
  37. package/dist/esm/plugins/emoji/index.js +14 -4
  38. package/dist/esm/plugins/index.js +1 -1
  39. package/dist/esm/plugins/insert-block/index.js +3 -7
  40. package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/index.js +4 -3
  41. package/dist/esm/plugins/media/nodeviews/mediaSingle.js +21 -3
  42. package/dist/esm/plugins/media/pm-plugins/main.js +11 -0
  43. package/dist/esm/plugins/media/styles.js +1 -1
  44. package/dist/esm/plugins/media/toolbar/index.js +23 -10
  45. package/dist/esm/plugins/media/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +41 -9
  46. package/dist/esm/plugins/media/utils/media-single.js +20 -2
  47. package/dist/esm/plugins/text-color/commands/toggle-color.js +3 -2
  48. package/dist/esm/utils/document.js +1 -22
  49. package/dist/esm/utils/index.js +1 -97
  50. package/dist/esm/utils/prosemirror/position.js +1 -39
  51. package/dist/esm/version-wrapper.js +1 -1
  52. package/dist/esm/version.json +1 -1
  53. package/dist/types/actions/index.d.ts +2 -3
  54. package/dist/types/labs/next/presets/default.d.ts +32 -32
  55. package/dist/types/plugins/collab-edit/actions.d.ts +1 -1
  56. package/dist/types/plugins/collab-edit/events/handlers.d.ts +2 -2
  57. package/dist/types/plugins/collab-edit/events/initialize.d.ts +1 -1
  58. package/dist/types/plugins/collab-edit/events/send-transaction.d.ts +1 -1
  59. package/dist/types/plugins/collab-edit/index.d.ts +1 -1
  60. package/dist/types/plugins/collab-edit/native-collab-provider-plugin.d.ts +2 -2
  61. package/dist/types/plugins/collab-edit/participants.d.ts +1 -1
  62. package/dist/types/plugins/collab-edit/plugin.d.ts +5 -6
  63. package/dist/types/plugins/collab-edit/types.d.ts +1 -2
  64. package/dist/types/plugins/collab-edit/ui/to-avatar.d.ts +2 -2
  65. package/dist/types/plugins/collab-edit/utils.d.ts +1 -2
  66. package/dist/types/plugins/emoji/commands/insert-emoji.d.ts +2 -2
  67. package/dist/types/plugins/emoji/index.d.ts +9 -4
  68. package/dist/types/plugins/index.d.ts +1 -1
  69. package/dist/types/plugins/insert-block/index.d.ts +3 -1
  70. package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/index.d.ts +0 -1
  71. package/dist/types/plugins/media/nodeviews/mediaSingle.d.ts +6 -1
  72. package/dist/types/plugins/media/pm-plugins/main.d.ts +3 -0
  73. package/dist/types/plugins/media/pm-plugins/types.d.ts +2 -0
  74. package/dist/types/plugins/media/toolbar/index.d.ts +1 -2
  75. package/dist/types/plugins/media/ui/ResizableMediaSingle/ResizableMediaSingleNext.d.ts +2 -1
  76. package/dist/types/plugins/media/utils/media-single.d.ts +2 -1
  77. package/dist/types/ui/Appearance/FullPage/StyledComponents.d.ts +1 -1
  78. package/dist/types/ui/ContentStyles/index.d.ts +2 -2
  79. package/dist/types/utils/document.d.ts +2 -7
  80. package/dist/types/utils/index.d.ts +2 -6
  81. package/dist/types/utils/prosemirror/position.d.ts +1 -8
  82. package/dist/types-ts4.5/actions/index.d.ts +2 -3
  83. package/dist/types-ts4.5/labs/next/presets/default.d.ts +32 -32
  84. package/dist/types-ts4.5/plugins/collab-edit/actions.d.ts +1 -1
  85. package/dist/types-ts4.5/plugins/collab-edit/events/handlers.d.ts +2 -2
  86. package/dist/types-ts4.5/plugins/collab-edit/events/initialize.d.ts +1 -1
  87. package/dist/types-ts4.5/plugins/collab-edit/events/send-transaction.d.ts +1 -1
  88. package/dist/types-ts4.5/plugins/collab-edit/index.d.ts +1 -1
  89. package/dist/types-ts4.5/plugins/collab-edit/native-collab-provider-plugin.d.ts +2 -2
  90. package/dist/types-ts4.5/plugins/collab-edit/participants.d.ts +1 -1
  91. package/dist/types-ts4.5/plugins/collab-edit/plugin.d.ts +5 -6
  92. package/dist/types-ts4.5/plugins/collab-edit/types.d.ts +1 -2
  93. package/dist/types-ts4.5/plugins/collab-edit/ui/to-avatar.d.ts +2 -2
  94. package/dist/types-ts4.5/plugins/collab-edit/utils.d.ts +1 -2
  95. package/dist/types-ts4.5/plugins/emoji/commands/insert-emoji.d.ts +2 -2
  96. package/dist/types-ts4.5/plugins/emoji/index.d.ts +9 -4
  97. package/dist/types-ts4.5/plugins/index.d.ts +1 -1
  98. package/dist/types-ts4.5/plugins/insert-block/index.d.ts +3 -1
  99. package/dist/types-ts4.5/plugins/insert-block/ui/ToolbarInsertBlock/index.d.ts +0 -1
  100. package/dist/types-ts4.5/plugins/media/nodeviews/mediaSingle.d.ts +6 -1
  101. package/dist/types-ts4.5/plugins/media/pm-plugins/main.d.ts +3 -0
  102. package/dist/types-ts4.5/plugins/media/pm-plugins/types.d.ts +2 -0
  103. package/dist/types-ts4.5/plugins/media/toolbar/index.d.ts +1 -2
  104. package/dist/types-ts4.5/plugins/media/ui/ResizableMediaSingle/ResizableMediaSingleNext.d.ts +2 -1
  105. package/dist/types-ts4.5/plugins/media/utils/media-single.d.ts +2 -1
  106. package/dist/types-ts4.5/ui/Appearance/FullPage/StyledComponents.d.ts +1 -1
  107. package/dist/types-ts4.5/ui/ContentStyles/index.d.ts +2 -2
  108. package/dist/types-ts4.5/utils/document.d.ts +2 -7
  109. package/dist/types-ts4.5/utils/index.d.ts +2 -6
  110. package/dist/types-ts4.5/utils/prosemirror/position.d.ts +1 -8
  111. package/package.json +4 -4
  112. package/report.api.md +5 -1
  113. package/tmp/api-report-tmp.d.ts +5 -1
@@ -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.insertMediaSingleNode = exports.insertMediaAsMediaSingle = exports.createMediaSingleNode = void 0;
7
+ exports.insertMediaSingleNode = exports.insertMediaAsMediaSingle = exports.getParentWidthForNestedMediaSingleNode = exports.createMediaSingleNode = void 0;
8
8
  exports.isCaptionNode = isCaptionNode;
9
9
  exports.isMediaSingle = void 0;
10
10
  exports.transformSliceForMedia = transformSliceForMedia;
@@ -223,4 +223,23 @@ function isCaptionNode(editorView) {
223
223
  return true;
224
224
  }
225
225
  return false;
226
- }
226
+ }
227
+ var getParentWidthForNestedMediaSingleNode = function getParentWidthForNestedMediaSingleNode(resolvedPos, view) {
228
+ var domNode = view.nodeDOM(resolvedPos.pos);
229
+ if (resolvedPos.nodeAfter && _utils3.floatingLayouts.includes(resolvedPos.nodeAfter.attrs.layout) && domNode && domNode.parentElement) {
230
+ var _view$state$schema$no = view.state.schema.nodes,
231
+ tableCell = _view$state$schema$no.tableCell,
232
+ tableHeader = _view$state$schema$no.tableHeader;
233
+ if ([tableCell, tableHeader].includes(resolvedPos.parent.type)) {
234
+ // since table has constant padding, use hardcoded constant instead of query the dom
235
+ var tablePadding = 8;
236
+ return domNode.parentElement.offsetWidth - tablePadding * 2;
237
+ }
238
+ return domNode.parentElement.offsetWidth;
239
+ }
240
+ if (domNode instanceof HTMLElement) {
241
+ return domNode.offsetWidth;
242
+ }
243
+ return null;
244
+ };
245
+ exports.getParentWidthForNestedMediaSingleNode = getParentWidthForNestedMediaSingleNode;
@@ -7,6 +7,7 @@ exports.toggleColor = void 0;
7
7
  var _mark = require("@atlaskit/editor-common/mark");
8
8
  var _main = require("../pm-plugins/main");
9
9
  var _disabled = require("../utils/disabled");
10
+ var _preset = require("@atlaskit/editor-common/preset");
10
11
  var toggleColor = function toggleColor(color) {
11
12
  return function (state, dispatch) {
12
13
  var textColor = state.schema.marks.textColor;
@@ -26,9 +27,9 @@ var toggleColor = function toggleColor(color) {
26
27
  color: color
27
28
  });
28
29
  state.tr.scrollIntoView();
29
- (0, _mark.toggleMark)(textColor, {
30
+ (0, _preset.pluginCommandToPMCommand)((0, _mark.toggleMark)(textColor, {
30
31
  color: color
31
- })(state, dispatch);
32
+ }))(state, dispatch);
32
33
  }
33
34
  return true;
34
35
  };
@@ -4,7 +4,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.findFarthestParentNode = void 0;
7
+ Object.defineProperty(exports, "findFarthestParentNode", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _utils.findFarthestParentNode;
11
+ }
12
+ });
8
13
  exports.getChangedNodes = getChangedNodes;
9
14
  exports.getChangedNodesIn = getChangedNodesIn;
10
15
  exports.getChildBreakoutModes = getChildBreakoutModes;
@@ -65,29 +70,6 @@ function processRawFragmentValue(schema, value, providerFactory, sanitizePrivate
65
70
  }
66
71
  return _model.Fragment.from(adfEntities);
67
72
  }
68
-
69
- /**
70
- * Find the farthest node given a condition
71
- * @param predicate Function to check the node
72
- */
73
- var findFarthestParentNode = function findFarthestParentNode(predicate) {
74
- return function ($pos) {
75
- var candidate = null;
76
- for (var i = $pos.depth; i > 0; i--) {
77
- var _node = $pos.node(i);
78
- if (predicate(_node)) {
79
- candidate = {
80
- pos: i > 0 ? $pos.before(i) : 0,
81
- start: $pos.start(i),
82
- depth: i,
83
- node: _node
84
- };
85
- }
86
- }
87
- return candidate;
88
- };
89
- };
90
- exports.findFarthestParentNode = findFarthestParentNode;
91
73
  var isSelectionEndOfParagraph = function isSelectionEndOfParagraph(state) {
92
74
  return state.selection.$to.parent.type === state.schema.nodes.paragraph && state.selection.$to.pos === state.doc.resolve(state.selection.$to.pos).end();
93
75
  };
@@ -10,7 +10,12 @@ Object.defineProperty(exports, "SetAttrsStep", {
10
10
  return _steps.SetAttrsStep;
11
11
  }
12
12
  });
13
- exports.checkNodeDown = checkNodeDown;
13
+ Object.defineProperty(exports, "checkNodeDown", {
14
+ enumerable: true,
15
+ get: function get() {
16
+ return _utils2.checkNodeDown;
17
+ }
18
+ });
14
19
  exports.compose = compose;
15
20
  exports.dedupe = dedupe;
16
21
  Object.defineProperty(exports, "findFarthestParentNode", {
@@ -33,14 +38,31 @@ Object.defineProperty(exports, "insideTable", {
33
38
  return _coreUtils.insideTable;
34
39
  }
35
40
  });
36
- exports.insideTableCell = void 0;
41
+ Object.defineProperty(exports, "insideTableCell", {
42
+ enumerable: true,
43
+ get: function get() {
44
+ return _utils2.insideTableCell;
45
+ }
46
+ });
37
47
  Object.defineProperty(exports, "isElementInTableCell", {
38
48
  enumerable: true,
39
49
  get: function get() {
40
50
  return _utils2.isElementInTableCell;
41
51
  }
42
52
  });
43
- exports.isInsideBlockQuote = exports.isInListItem = exports.isEmptyNode = void 0;
53
+ Object.defineProperty(exports, "isEmptyNode", {
54
+ enumerable: true,
55
+ get: function get() {
56
+ return _utils2.isEmptyNode;
57
+ }
58
+ });
59
+ Object.defineProperty(exports, "isInListItem", {
60
+ enumerable: true,
61
+ get: function get() {
62
+ return _utils2.isInListItem;
63
+ }
64
+ });
65
+ exports.isInsideBlockQuote = void 0;
44
66
  Object.defineProperty(exports, "isLastItemMediaGroup", {
45
67
  enumerable: true,
46
68
  get: function get() {
@@ -72,7 +94,12 @@ Object.defineProperty(exports, "isSelectionEndOfParagraph", {
72
94
  return _document.isSelectionEndOfParagraph;
73
95
  }
74
96
  });
75
- exports.isSelectionInsideLastNodeInDocument = isSelectionInsideLastNodeInDocument;
97
+ Object.defineProperty(exports, "isSelectionInsideLastNodeInDocument", {
98
+ enumerable: true,
99
+ get: function get() {
100
+ return _utils2.isSelectionInsideLastNodeInDocument;
101
+ }
102
+ });
76
103
  exports.isTemporary = void 0;
77
104
  Object.defineProperty(exports, "isText", {
78
105
  enumerable: true,
@@ -138,13 +165,13 @@ var _commands = require("@atlaskit/editor-prosemirror/commands");
138
165
  var _editorJsonTransformer = require("@atlaskit/editor-json-transformer");
139
166
  var _cursor = require("../plugins/fake-text-cursor/cursor");
140
167
  var _utils = require("@atlaskit/editor-prosemirror/utils");
141
- var _document = require("./document");
168
+ var _utils2 = require("@atlaskit/editor-common/utils");
142
169
  var _coreUtils = require("@atlaskit/editor-common/core-utils");
170
+ var _document = require("./document");
143
171
  var _mark = require("./mark");
144
172
  var _nodes = require("./nodes");
145
173
  var _selection = require("./selection");
146
174
  var _measureEnum = _interopRequireDefault(require("./performance/measure-enum"));
147
- var _utils2 = require("@atlaskit/editor-common/utils");
148
175
  var _steps = require("@atlaskit/adf-schema/steps");
149
176
  function isMarkTypeCompatibleWithMark(markType, mark) {
150
177
  return !mark.type.excludes(markType) && !markType.excludes(mark.type);
@@ -152,11 +179,6 @@ function isMarkTypeCompatibleWithMark(markType, mark) {
152
179
  function isMarkTypeAllowedInNode(markType, state) {
153
180
  return (0, _commands.toggleMark)(markType)(state);
154
181
  }
155
- function isSelectionInsideLastNodeInDocument(selection) {
156
- var docNode = selection.$anchor.node(0);
157
- var rootNode = selection.$anchor.node(1);
158
- return docNode.lastChild === rootNode;
159
- }
160
182
  function getCursor(selection) {
161
183
  return selection.$cursor || undefined;
162
184
  }
@@ -204,36 +226,6 @@ function isMarkTypeAllowedInCurrentSelection(markType, state) {
204
226
  return allowedInActiveMarks;
205
227
  });
206
228
  }
207
- function checkNodeDown(selection, doc, filter) {
208
- var ancestorDepth = findAncestorPosition(doc, selection.$to).depth;
209
-
210
- // Top level node
211
- if (ancestorDepth === 0) {
212
- return false;
213
- }
214
- var res = doc.resolve(selection.$to.after(ancestorDepth));
215
- return res.nodeAfter ? filter(res.nodeAfter) : false;
216
- }
217
-
218
- /**
219
- * Traverse the document until an "ancestor" is found. Any nestable block can be an ancestor.
220
- */
221
- function findAncestorPosition(doc, pos) {
222
- var nestableBlocks = ['blockquote', 'bulletList', 'orderedList'];
223
- if (pos.depth === 1) {
224
- return pos;
225
- }
226
- var node = pos.node(pos.depth);
227
- var newPos = pos;
228
- while (pos.depth >= 1) {
229
- pos = doc.resolve(pos.before(pos.depth));
230
- node = pos.node(pos.depth);
231
- if (node && nestableBlocks.indexOf(node.type.name) !== -1) {
232
- newPos = pos;
233
- }
234
- }
235
- return newPos;
236
- }
237
229
  var transformer = new _editorJsonTransformer.JSONTransformer();
238
230
  function toJSON(node) {
239
231
  return transformer.encode(node);
@@ -280,70 +272,6 @@ var isTemporary = function isTemporary(id) {
280
272
  return id.indexOf('temporary:') === 0;
281
273
  };
282
274
  exports.isTemporary = isTemporary;
283
- var isEmptyNode = function isEmptyNode(schema) {
284
- var _schema$nodes = schema.nodes,
285
- doc = _schema$nodes.doc,
286
- paragraph = _schema$nodes.paragraph,
287
- codeBlock = _schema$nodes.codeBlock,
288
- blockquote = _schema$nodes.blockquote,
289
- panel = _schema$nodes.panel,
290
- heading = _schema$nodes.heading,
291
- listItem = _schema$nodes.listItem,
292
- bulletList = _schema$nodes.bulletList,
293
- orderedList = _schema$nodes.orderedList,
294
- taskList = _schema$nodes.taskList,
295
- taskItem = _schema$nodes.taskItem,
296
- decisionList = _schema$nodes.decisionList,
297
- decisionItem = _schema$nodes.decisionItem,
298
- media = _schema$nodes.media,
299
- mediaGroup = _schema$nodes.mediaGroup,
300
- mediaSingle = _schema$nodes.mediaSingle;
301
- var innerIsEmptyNode = function innerIsEmptyNode(node) {
302
- switch (node.type) {
303
- case media:
304
- case mediaGroup:
305
- case mediaSingle:
306
- return false;
307
- case paragraph:
308
- case codeBlock:
309
- case heading:
310
- case taskItem:
311
- case decisionItem:
312
- return node.content.size === 0;
313
- case blockquote:
314
- case panel:
315
- case listItem:
316
- return node.content.size === 2 && innerIsEmptyNode(node.content.firstChild);
317
- case bulletList:
318
- case orderedList:
319
- return node.content.size === 4 && innerIsEmptyNode(node.content.firstChild);
320
- case taskList:
321
- case decisionList:
322
- return node.content.size === 2 && innerIsEmptyNode(node.content.firstChild);
323
- case doc:
324
- var isEmpty = true;
325
- node.content.forEach(function (child) {
326
- isEmpty = isEmpty && innerIsEmptyNode(child);
327
- });
328
- return isEmpty;
329
- default:
330
- return (0, _document.isNodeEmpty)(node);
331
- }
332
- };
333
- return innerIsEmptyNode;
334
- };
335
- exports.isEmptyNode = isEmptyNode;
336
- var insideTableCell = function insideTableCell(state) {
337
- var _state$schema$nodes = state.schema.nodes,
338
- tableCell = _state$schema$nodes.tableCell,
339
- tableHeader = _state$schema$nodes.tableHeader;
340
- return (0, _utils.hasParentNodeOfType)([tableCell, tableHeader])(state.selection);
341
- };
342
- exports.insideTableCell = insideTableCell;
343
- var isInListItem = function isInListItem(state) {
344
- return (0, _utils.hasParentNodeOfType)(state.schema.nodes.listItem)(state.selection);
345
- };
346
- exports.isInListItem = isInListItem;
347
275
  var hasOpenEnd = function hasOpenEnd(slice) {
348
276
  return slice.openStart > 0 || slice.openEnd > 0;
349
277
  };
@@ -3,48 +3,40 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.atTheBeginningOfBlock = atTheBeginningOfBlock;
7
- exports.atTheBeginningOfDoc = atTheBeginningOfDoc;
8
- exports.atTheEndOfBlock = atTheEndOfBlock;
9
- exports.atTheEndOfDoc = atTheEndOfDoc;
10
- exports.endPositionOfParent = endPositionOfParent;
11
- exports.startPositionOfParent = startPositionOfParent;
12
- var _state = require("@atlaskit/editor-prosemirror/state");
13
- var _selection = require("../../plugins/selection/gap-cursor/selection");
14
- function atTheEndOfDoc(state) {
15
- var selection = state.selection,
16
- doc = state.doc;
17
- return doc.nodeSize - selection.$to.pos - 2 === selection.$to.depth;
18
- }
19
- function atTheBeginningOfDoc(state) {
20
- var selection = state.selection;
21
- return selection.$from.pos === selection.$from.depth;
22
- }
23
- function atTheEndOfBlock(state) {
24
- var selection = state.selection;
25
- var $to = selection.$to;
26
- if (selection instanceof _selection.GapCursorSelection) {
27
- return false;
6
+ Object.defineProperty(exports, "atTheBeginningOfBlock", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _selection.atTheBeginningOfBlock;
28
10
  }
29
- if (selection instanceof _state.NodeSelection && selection.node.isBlock) {
30
- return true;
11
+ });
12
+ Object.defineProperty(exports, "atTheBeginningOfDoc", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _selection.atTheBeginningOfDoc;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "atTheEndOfBlock", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _selection.atTheEndOfBlock;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "atTheEndOfDoc", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _selection.atTheEndOfDoc;
31
28
  }
32
- return endPositionOfParent($to) === $to.pos + 1;
33
- }
34
- function atTheBeginningOfBlock(state) {
35
- var selection = state.selection;
36
- var $from = selection.$from;
37
- if (selection instanceof _selection.GapCursorSelection) {
38
- return false;
29
+ });
30
+ Object.defineProperty(exports, "endPositionOfParent", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _selection.endPositionOfParent;
39
34
  }
40
- if (selection instanceof _state.NodeSelection && selection.node.isBlock) {
41
- return true;
35
+ });
36
+ Object.defineProperty(exports, "startPositionOfParent", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _selection.startPositionOfParent;
42
40
  }
43
- return startPositionOfParent($from) === $from.pos;
44
- }
45
- function startPositionOfParent(resolvedPos) {
46
- return resolvedPos.start(resolvedPos.depth);
47
- }
48
- function endPositionOfParent(resolvedPos) {
49
- return resolvedPos.end(resolvedPos.depth) + 1;
50
- }
41
+ });
42
+ var _selection = require("@atlaskit/editor-common/selection");
@@ -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.19.1";
9
+ var version = "187.20.1";
10
10
  exports.version = version;
11
11
  var nextMajorVersion = function nextMajorVersion() {
12
12
  return [Number(version.split('.')[0]) + 1, 0, 0].join('.');
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-core",
3
- "version": "187.19.1",
3
+ "version": "187.20.1",
4
4
  "sideEffects": false
5
5
  }
@@ -3,34 +3,38 @@ import { Fragment } from '@atlaskit/editor-prosemirror/model';
3
3
  import { Selection } from '@atlaskit/editor-prosemirror/state';
4
4
  import { EVENT_TYPE, ACTION_SUBJECT_ID, ACTION_SUBJECT, ACTION } from '@atlaskit/editor-common/analytics';
5
5
  export const insertEmoji = editorAnalyticsAPI => (emojiId, inputMethod) => {
6
- return (state, dispatch) => {
6
+ return ({
7
+ tr
8
+ }) => {
9
+ const {
10
+ doc,
11
+ selection
12
+ } = tr;
7
13
  const {
8
14
  emoji
9
- } = state.schema.nodes;
15
+ } = tr.doc.type.schema.nodes;
10
16
  if (emoji && emojiId) {
11
17
  const node = emoji.createChecked({
12
18
  ...emojiId,
13
19
  text: emojiId.fallback || emojiId.shortName
14
20
  });
15
- const textNode = state.schema.text(' ');
16
- if (dispatch) {
17
- const fragment = Fragment.fromArray([node, textNode]);
18
- const tr = safeInsert(fragment)(state.tr);
19
- if (inputMethod) {
20
- editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent({
21
- action: ACTION.INSERTED,
22
- actionSubject: ACTION_SUBJECT.DOCUMENT,
23
- actionSubjectId: ACTION_SUBJECT_ID.EMOJI,
24
- attributes: {
25
- inputMethod
26
- },
27
- eventType: EVENT_TYPE.TRACK
28
- })(tr);
29
- }
30
- dispatch(tr.setSelection(Selection.near(tr.doc.resolve(state.selection.$from.pos + fragment.size))));
21
+ const textNode = doc.type.schema.text(' ');
22
+ const fragment = Fragment.fromArray([node, textNode]);
23
+ const newTr = safeInsert(fragment)(tr);
24
+ if (inputMethod) {
25
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent({
26
+ action: ACTION.INSERTED,
27
+ actionSubject: ACTION_SUBJECT.DOCUMENT,
28
+ actionSubjectId: ACTION_SUBJECT_ID.EMOJI,
29
+ attributes: {
30
+ inputMethod
31
+ },
32
+ eventType: EVENT_TYPE.TRACK
33
+ })(newTr);
31
34
  }
32
- return true;
35
+ newTr.setSelection(Selection.near(newTr.doc.resolve(selection.$from.pos + fragment.size)));
36
+ return newTr;
33
37
  }
34
- return false;
38
+ return null;
35
39
  };
36
40
  };
@@ -12,6 +12,7 @@ import { IconEmoji } from '@atlaskit/editor-common/quick-insert';
12
12
  import { EmojiNodeView } from './nodeviews/emoji';
13
13
  import { messages } from '../insert-block/ui/ToolbarInsertBlock/messages';
14
14
  import { openTypeAheadAtCursor } from '../type-ahead/transforms/open-typeahead-at-cursor';
15
+ import { insertEmoji } from './commands/insert-emoji';
15
16
  export const emojiToTypeaheadItem = (emoji, emojiProvider) => ({
16
17
  title: emoji.shortName || '',
17
18
  key: emoji.id || emoji.shortName,
@@ -54,7 +55,8 @@ const memoizedToItem = memoize(emojiToTypeaheadItem);
54
55
  export const defaultListLimit = 50;
55
56
  const isFullShortName = query => query && query.length > 1 && query.charAt(0) === ':' && query.charAt(query.length - 1) === ':';
56
57
  const TRIGGER = ':';
57
- const emojiPlugin = (options, api) => {
58
+ export const emojiPlugin = (options, api) => {
59
+ var _api$dependencies$ana9;
58
60
  const typeAhead = {
59
61
  id: TypeAheadAvailableNodes.EMOJI,
60
62
  trigger: TRIGGER,
@@ -175,6 +177,15 @@ const emojiPlugin = (options, api) => {
175
177
  }
176
178
  }];
177
179
  },
180
+ getSharedState(editorState) {
181
+ if (!editorState) {
182
+ return undefined;
183
+ }
184
+ return emojiPluginKey.getState(editorState);
185
+ },
186
+ commands: {
187
+ insertEmoji: insertEmoji(api === null || api === void 0 ? void 0 : (_api$dependencies$ana9 = api.dependencies.analytics) === null || _api$dependencies$ana9 === void 0 ? void 0 : _api$dependencies$ana9.actions)
188
+ },
178
189
  pluginsOptions: {
179
190
  quickInsert: ({
180
191
  formatMessage
@@ -186,13 +197,13 @@ const emojiPlugin = (options, api) => {
186
197
  keyshortcut: ':',
187
198
  icon: () => /*#__PURE__*/React.createElement(IconEmoji, null),
188
199
  action(insert, state) {
189
- var _api$dependencies$ana9;
200
+ var _api$dependencies$ana10;
190
201
  const tr = insert(undefined);
191
202
  openTypeAheadAtCursor({
192
203
  triggerHandler: typeAhead,
193
204
  inputMethod: INPUT_METHOD.QUICK_INSERT
194
205
  })(tr);
195
- api === null || api === void 0 ? void 0 : (_api$dependencies$ana9 = api.dependencies.analytics) === null || _api$dependencies$ana9 === void 0 ? void 0 : _api$dependencies$ana9.actions.attachAnalyticsEvent({
206
+ api === null || api === void 0 ? void 0 : (_api$dependencies$ana10 = api.dependencies.analytics) === null || _api$dependencies$ana10 === void 0 ? void 0 : _api$dependencies$ana10.actions.attachAnalyticsEvent({
196
207
  action: ACTION.INVOKED,
197
208
  actionSubject: ACTION_SUBJECT.TYPEAHEAD,
198
209
  actionSubjectId: ACTION_SUBJECT_ID.TYPEAHEAD_EMOJI,
@@ -208,7 +219,6 @@ const emojiPlugin = (options, api) => {
208
219
  }
209
220
  };
210
221
  };
211
- export default emojiPlugin;
212
222
 
213
223
  /**
214
224
  * Actions
@@ -6,7 +6,7 @@ export { default as clearMarksOnChangeToEmptyDocumentPlugin } from './clear-mark
6
6
  export { default as codeBlockPlugin } from './code-block';
7
7
  export { default as collabEditPlugin } from './collab-edit';
8
8
  export { default as datePlugin } from './date';
9
- export { default as emojiPlugin } from './emoji';
9
+ export { emojiPlugin } from './emoji';
10
10
  export { default as extensionPlugin } from './extension';
11
11
  export { default as fakeTextCursorPlugin } from './fake-text-cursor';
12
12
  export { default as helpDialogPlugin } from './help-dialog';
@@ -5,7 +5,6 @@ import { stateKey as mediaStateKey } from '../media/pm-plugins/plugin-key';
5
5
  import { isTypeAheadAllowed } from '../type-ahead/utils';
6
6
  import { pluginKey as layoutStateKey } from '../layout';
7
7
  import { insertMacroFromMacroBrowser } from '../macro';
8
- import { emojiPluginKey } from '../emoji';
9
8
  import WithPluginState from '../../ui/WithPluginState';
10
9
  import ToolbarInsertBlock from './ui/ToolbarInsertBlock';
11
10
  import { pluginKey as typeAheadPluginKey } from '../type-ahead/pm-plugins/key';
@@ -62,7 +61,6 @@ const insertBlockPlugin = (options = {}, api) => {
62
61
  blockTypeState: blockTypeStateKey,
63
62
  mediaState: mediaStateKey,
64
63
  macroState: macroStateKey,
65
- emojiState: emojiPluginKey,
66
64
  placeholderTextState: placeholderTextStateKey,
67
65
  layoutState: layoutStateKey
68
66
  },
@@ -70,7 +68,6 @@ const insertBlockPlugin = (options = {}, api) => {
70
68
  blockTypeState,
71
69
  mediaState,
72
70
  macroState = {},
73
- emojiState,
74
71
  placeholderTextState,
75
72
  layoutState
76
73
  }) => /*#__PURE__*/React.createElement(ToolbarInsertBlockWithInjectionApi, {
@@ -90,7 +87,6 @@ const insertBlockPlugin = (options = {}, api) => {
90
87
  blockTypeState: blockTypeState,
91
88
  mediaState: mediaState,
92
89
  macroState: macroState,
93
- emojiState: emojiState,
94
90
  placeholderTextState: placeholderTextState,
95
91
  layoutState: layoutState,
96
92
  providers: providers,
@@ -124,7 +120,6 @@ function ToolbarInsertBlockWithInjectionApi({
124
120
  blockTypeState,
125
121
  mediaState,
126
122
  macroState,
127
- emojiState,
128
123
  placeholderTextState,
129
124
  layoutState,
130
125
  featureFlags
@@ -135,8 +130,9 @@ function ToolbarInsertBlockWithInjectionApi({
135
130
  dateState,
136
131
  hyperlinkState,
137
132
  imageUploadState,
138
- mentionState
139
- } = useSharedPluginState(pluginInjectionApi, ['hyperlink', 'date', 'imageUpload', 'mention']);
133
+ mentionState,
134
+ emojiState
135
+ } = useSharedPluginState(pluginInjectionApi, ['hyperlink', 'date', 'imageUpload', 'mention', 'emoji']);
140
136
  return /*#__PURE__*/React.createElement(ToolbarInsertBlock, {
141
137
  pluginInjectionApi: pluginInjectionApi,
142
138
  buttons: buttons,
@@ -16,8 +16,7 @@ import { insertTaskDecisionCommand } from '../../../tasks-and-decisions/commands
16
16
  import { insertExpand } from '../../../expand/commands';
17
17
  import { createTypeAheadTools } from '../../../type-ahead/api';
18
18
  import { updateStatusWithAnalytics } from '../../../status/actions';
19
- import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '../../../analytics';
20
- import { insertEmoji } from '../../../emoji/commands/insert-emoji';
19
+ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
21
20
  import { messages } from './messages';
22
21
  import { createItems } from './create-items';
23
22
  import { BlockInsertMenu } from './block-insert-menu';
@@ -283,8 +282,12 @@ export class ToolbarInsertBlock extends React.PureComponent {
283
282
  return true;
284
283
  });
285
284
  _defineProperty(this, "handleSelectedEmoji", emojiId => {
285
+ var _pluginInjectionApi$d8;
286
+ const {
287
+ pluginInjectionApi
288
+ } = this.props;
286
289
  this.props.editorView.focus();
287
- insertEmoji(this.editorAnalyticsAPI)(emojiId, INPUT_METHOD.PICKER)(this.props.editorView.state, this.props.editorView.dispatch);
290
+ pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.executeCommand((_pluginInjectionApi$d8 = pluginInjectionApi.dependencies.emoji) === null || _pluginInjectionApi$d8 === void 0 ? void 0 : _pluginInjectionApi$d8.commands.insertEmoji(emojiId, INPUT_METHOD.PICKER));
288
291
  this.toggleEmojiPicker();
289
292
  return true;
290
293
  });
@@ -8,6 +8,7 @@ import { MediaSingle } from '@atlaskit/editor-common/ui';
8
8
  import { browser, floatingLayouts, isRichMediaInsideOfBlockNode } from '@atlaskit/editor-common/utils';
9
9
  import { isNodeSelectedOrInRange } from '../../../utils/nodes';
10
10
  import { setNodeSelection, setTextSelection } from '../../../utils';
11
+ import { getParentWidthForNestedMediaSingleNode } from '../utils/media-single';
11
12
  import ResizableMediaSingleNext from '../ui/ResizableMediaSingle/ResizableMediaSingleNext';
12
13
  import ResizableMediaSingle from '../ui/ResizableMediaSingle';
13
14
  import { MEDIA_CONTENT_WRAP_CLASS_NAME } from '../pm-plugins/main';
@@ -180,13 +181,12 @@ export default class MediaSingleNode extends Component {
180
181
  * Get parent width for a nested media single node
181
182
  * @param view Editor view
182
183
  * @param pos node position
183
- * @param includeMoreParentNodeTypes should consider table and list as parent nodes(only true for new experience)
184
184
  */
185
185
  _defineProperty(this, "getLineLength", (view, pos, includeMoreParentNodeTypes) => {
186
186
  if (typeof pos !== 'number') {
187
187
  return null;
188
188
  }
189
- if (isRichMediaInsideOfBlockNode(view, pos, includeMoreParentNodeTypes)) {
189
+ if (isRichMediaInsideOfBlockNode(view, pos)) {
190
190
  const $pos = view.state.doc.resolve(pos);
191
191
  const domNode = view.nodeDOM($pos.pos);
192
192
  if ($pos.nodeAfter && floatingLayouts.indexOf($pos.nodeAfter.attrs.layout) > -1 && domNode && domNode.parentElement) {
@@ -198,6 +198,21 @@ export default class MediaSingleNode extends Component {
198
198
  }
199
199
  return null;
200
200
  });
201
+ /**
202
+ * Get parent width for a nested media single node for new experience
203
+ * @param view Editor view
204
+ * @param pos node position
205
+ */
206
+ _defineProperty(this, "getLineLengthNext", (view, pos) => {
207
+ if (typeof pos !== 'number') {
208
+ return null;
209
+ }
210
+ const $pos = view.state.doc.resolve(pos);
211
+ if ($pos && $pos.parent.type.name !== 'doc') {
212
+ return getParentWidthForNestedMediaSingleNode($pos, view);
213
+ }
214
+ return null;
215
+ });
201
216
  }
202
217
  UNSAFE_componentWillReceiveProps(nextProps) {
203
218
  if (nextProps.mediaProvider !== this.props.mediaProvider) {
@@ -280,7 +295,7 @@ export default class MediaSingleNode extends Component {
280
295
  }
281
296
  const isSelected = selected();
282
297
  const contentWidthForLegacyExperience = this.getLineLength(view, getPos()) || lineLength;
283
- const contentWidth = this.getLineLength(view, getPos(), true) || lineLength;
298
+ const contentWidth = this.getLineLengthNext(view, getPos()) || lineLength;
284
299
  const mediaSingleProps = {
285
300
  layout,
286
301
  width,
@@ -411,6 +426,9 @@ class MediaSingleNodeView extends ReactNodeView {
411
426
  // see also: https://github.com/ProseMirror/prosemirror/issues/884
412
427
  domRef.contentEditable = 'true';
413
428
  }
429
+ if (getBooleanFF('platform.editor.media.extended-resize-experience')) {
430
+ domRef.classList.add('media-extended-resize-experience');
431
+ }
414
432
  return domRef;
415
433
  }
416
434
  getContentDOM() {