@atlaskit/editor-plugin-hyperlink 2.6.1 → 2.7.0

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @atlaskit/editor-plugin-hyperlink
2
2
 
3
+ ## 2.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`aef5432662b58`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/aef5432662b58) -
8
+ [ux] EDM-10363 Implement opening links via configure overlay dropdown open link button
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies
13
+
14
+ ## 2.6.2
15
+
16
+ ### Patch Changes
17
+
18
+ - [#123180](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/123180)
19
+ [`14addfd71de93`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/14addfd71de93) -
20
+ Fix edit link modal disappear when hover over hyperlink in live page
21
+ - Updated dependencies
22
+
3
23
  ## 2.6.1
4
24
 
5
25
  ### Patch Changes
@@ -13,7 +13,8 @@ var ButtonWrapper = exports.ButtonWrapper = function ButtonWrapper(_ref) {
13
13
  var editorView = _ref.editorView,
14
14
  pos = _ref.pos,
15
15
  stateKey = _ref.stateKey,
16
- intl = _ref.intl;
16
+ intl = _ref.intl,
17
+ onOpenLinkClick = _ref.onOpenLinkClick;
17
18
  var wrapper = document.createElement('span');
18
19
  wrapper.style.position = 'relative';
19
20
  var nonBreakingCharacter = "\u2060";
@@ -30,7 +31,8 @@ var ButtonWrapper = exports.ButtonWrapper = function ButtonWrapper(_ref) {
30
31
  }, /*#__PURE__*/_react.default.createElement(_link.OverlayButton, {
31
32
  targetElementPos: pos,
32
33
  editorView: editorView,
33
- onDropdownChange: onDropdownChange
34
+ onDropdownChange: onDropdownChange,
35
+ onOpenLinkClick: onOpenLinkClick
34
36
  }), nonBreakingCharacter), wrapper);
35
37
  return wrapper;
36
38
  };
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.stateKey = exports.plugin = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _uuid = _interopRequireDefault(require("uuid"));
10
- var _analytics = require("@atlaskit/editor-common/analytics");
11
10
  var _link3 = require("@atlaskit/editor-common/link");
12
11
  var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
13
12
  var _utils = require("@atlaskit/editor-common/utils");
@@ -228,7 +227,29 @@ var plugin = exports.plugin = function plugin(dispatch, intl, editorAppearance,
228
227
  editorView: view,
229
228
  pos: configureButtonTargetPos,
230
229
  stateKey: stateKey,
231
- intl: intl
230
+ intl: intl,
231
+ onOpenLinkClick: function onOpenLinkClick(event) {
232
+ var _node$marks$find, _pluginInjectionApi$a;
233
+ if (configureButtonTargetPos === undefined || typeof configureButtonTargetPos !== 'number') {
234
+ return;
235
+ }
236
+ var node = view.state.tr.doc.nodeAt(configureButtonTargetPos);
237
+ if (node === null) {
238
+ return;
239
+ }
240
+ var url = (_node$marks$find = node.marks.find(function (mark) {
241
+ return mark.type.name === 'link';
242
+ })) === null || _node$marks$find === void 0 ? void 0 : _node$marks$find.attrs.href;
243
+ if (!url) {
244
+ return;
245
+ }
246
+ (0, _link3.handleNavigation)({
247
+ fireAnalyticsEvent: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a === void 0 ? void 0 : _pluginInjectionApi$a.actions.fireAnalyticsEvent,
248
+ onClickCallback: onClickCallback,
249
+ url: url,
250
+ event: event
251
+ });
252
+ }
232
253
  });
233
254
  });
234
255
  _decorations = _view.DecorationSet.create(newState.doc, [decoration]);
@@ -324,10 +345,13 @@ var plugin = exports.plugin = function plugin(dispatch, intl, editorAppearance,
324
345
  dom.onmouseenter = function () {
325
346
  var _stateKey$getState2;
326
347
  var _ref2 = (_stateKey$getState2 = stateKey.getState(view.state)) !== null && _stateKey$getState2 !== void 0 ? _stateKey$getState2 : {},
348
+ activeLinkMark = _ref2.activeLinkMark,
327
349
  configureButtonTargetPos = _ref2.configureButtonTargetPos;
328
- var nodePos = view.posAtDOM(dom, -1);
329
- if (nodePos !== configureButtonTargetPos) {
330
- setTargetElementPos(nodePos);
350
+ if (!activeLinkMark) {
351
+ var nodePos = view.posAtDOM(dom, -1);
352
+ if (nodePos !== configureButtonTargetPos) {
353
+ setTargetElementPos(nodePos);
354
+ }
331
355
  }
332
356
  };
333
357
  dom.onmouseleave = function () {
@@ -340,34 +364,17 @@ var plugin = exports.plugin = function plugin(dispatch, intl, editorAppearance,
340
364
  };
341
365
  dom.onclick = function (event) {
342
366
  if (isDirectTarget(event, dom)) {
343
- var _pluginInjectionApi$a, _pluginInjectionApi$a2;
367
+ var _pluginInjectionApi$a2;
344
368
  var url = mark.attrs.href;
345
- pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a === void 0 || (_pluginInjectionApi$a = _pluginInjectionApi$a.actions) === null || _pluginInjectionApi$a === void 0 || (_pluginInjectionApi$a2 = _pluginInjectionApi$a.fireAnalyticsEvent) === null || _pluginInjectionApi$a2 === void 0 || _pluginInjectionApi$a2.call(_pluginInjectionApi$a, {
346
- action: _analytics.ACTION.VISITED,
347
- actionSubject: _analytics.ACTION_SUBJECT.LINK,
348
- eventType: _analytics.EVENT_TYPE.TRACK,
349
- attributes: {
350
- platform: _analytics.PLATFORMS.WEB,
351
- mode: _analytics.MODE.EDITOR
352
- }
369
+ // event is globalThis.MouseEvent, while handleNavigation
370
+ // (and editor-common OnClickCallback) require React.MouseEvent
371
+ var reactMouseEvent = event;
372
+ (0, _link3.handleNavigation)({
373
+ fireAnalyticsEvent: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a2 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a2 === void 0 ? void 0 : _pluginInjectionApi$a2.actions.fireAnalyticsEvent,
374
+ onClickCallback: onClickCallback,
375
+ url: url,
376
+ event: reactMouseEvent
353
377
  });
354
- if (url) {
355
- try {
356
- onClickCallback === null || onClickCallback === void 0 || onClickCallback({
357
- event: event,
358
- url: url
359
- });
360
- } catch (_unused) {}
361
-
362
- /**
363
- * Links should navigate by default in live pages if:
364
- * - the link is the direct target of the click event
365
- * - default handling wasn't prevented with `event.preventDefault()`
366
- */
367
- if (!event.defaultPrevented) {
368
- window.location.href = url;
369
- }
370
- }
371
378
  }
372
379
  };
373
380
  return {
@@ -6,7 +6,8 @@ export const ButtonWrapper = ({
6
6
  editorView,
7
7
  pos,
8
8
  stateKey,
9
- intl
9
+ intl,
10
+ onOpenLinkClick
10
11
  }) => {
11
12
  const wrapper = document.createElement('span');
12
13
  wrapper.style.position = 'relative';
@@ -24,7 +25,8 @@ export const ButtonWrapper = ({
24
25
  }, /*#__PURE__*/React.createElement(OverlayButton, {
25
26
  targetElementPos: pos,
26
27
  editorView: editorView,
27
- onDropdownChange: onDropdownChange
28
+ onDropdownChange: onDropdownChange,
29
+ onOpenLinkClick: onOpenLinkClick
28
30
  }), nonBreakingCharacter), wrapper);
29
31
  return wrapper;
30
32
  };
@@ -1,6 +1,5 @@
1
1
  import uuid from 'uuid';
2
- import { ACTION, ACTION_SUBJECT, EVENT_TYPE, MODE, PLATFORMS } from '@atlaskit/editor-common/analytics';
3
- import { InsertStatus, LinkAction } from '@atlaskit/editor-common/link';
2
+ import { handleNavigation, InsertStatus, LinkAction } from '@atlaskit/editor-common/link';
4
3
  import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
5
4
  import { canLinkBeCreatedInRange, shallowEqual } from '@atlaskit/editor-common/utils';
6
5
  import { DOMSerializer } from '@atlaskit/editor-prosemirror/model';
@@ -232,7 +231,27 @@ export const plugin = (dispatch, intl, editorAppearance, pluginInjectionApi, onC
232
231
  editorView: view,
233
232
  pos: configureButtonTargetPos,
234
233
  stateKey,
235
- intl
234
+ intl,
235
+ onOpenLinkClick: event => {
236
+ var _node$marks$find, _pluginInjectionApi$a;
237
+ if (configureButtonTargetPos === undefined || typeof configureButtonTargetPos !== 'number') {
238
+ return;
239
+ }
240
+ const node = view.state.tr.doc.nodeAt(configureButtonTargetPos);
241
+ if (node === null) {
242
+ return;
243
+ }
244
+ const url = (_node$marks$find = node.marks.find(mark => mark.type.name === 'link')) === null || _node$marks$find === void 0 ? void 0 : _node$marks$find.attrs.href;
245
+ if (!url) {
246
+ return;
247
+ }
248
+ handleNavigation({
249
+ fireAnalyticsEvent: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a === void 0 ? void 0 : _pluginInjectionApi$a.actions.fireAnalyticsEvent,
250
+ onClickCallback,
251
+ url,
252
+ event
253
+ });
254
+ }
236
255
  });
237
256
  });
238
257
  decorations = DecorationSet.create(newState.doc, [decoration]);
@@ -336,11 +355,14 @@ export const plugin = (dispatch, intl, editorAppearance, pluginInjectionApi, onC
336
355
  dom.onmouseenter = () => {
337
356
  var _stateKey$getState2;
338
357
  const {
358
+ activeLinkMark,
339
359
  configureButtonTargetPos
340
360
  } = (_stateKey$getState2 = stateKey.getState(view.state)) !== null && _stateKey$getState2 !== void 0 ? _stateKey$getState2 : {};
341
- const nodePos = view.posAtDOM(dom, -1);
342
- if (nodePos !== configureButtonTargetPos) {
343
- setTargetElementPos(nodePos);
361
+ if (!activeLinkMark) {
362
+ const nodePos = view.posAtDOM(dom, -1);
363
+ if (nodePos !== configureButtonTargetPos) {
364
+ setTargetElementPos(nodePos);
365
+ }
344
366
  }
345
367
  };
346
368
  dom.onmouseleave = () => {
@@ -354,34 +376,17 @@ export const plugin = (dispatch, intl, editorAppearance, pluginInjectionApi, onC
354
376
  };
355
377
  dom.onclick = event => {
356
378
  if (isDirectTarget(event, dom)) {
357
- var _pluginInjectionApi$a, _pluginInjectionApi$a2, _pluginInjectionApi$a3;
379
+ var _pluginInjectionApi$a2;
358
380
  const url = mark.attrs.href;
359
- pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a === void 0 ? void 0 : (_pluginInjectionApi$a2 = _pluginInjectionApi$a.actions) === null || _pluginInjectionApi$a2 === void 0 ? void 0 : (_pluginInjectionApi$a3 = _pluginInjectionApi$a2.fireAnalyticsEvent) === null || _pluginInjectionApi$a3 === void 0 ? void 0 : _pluginInjectionApi$a3.call(_pluginInjectionApi$a2, {
360
- action: ACTION.VISITED,
361
- actionSubject: ACTION_SUBJECT.LINK,
362
- eventType: EVENT_TYPE.TRACK,
363
- attributes: {
364
- platform: PLATFORMS.WEB,
365
- mode: MODE.EDITOR
366
- }
381
+ // event is globalThis.MouseEvent, while handleNavigation
382
+ // (and editor-common OnClickCallback) require React.MouseEvent
383
+ const reactMouseEvent = event;
384
+ handleNavigation({
385
+ fireAnalyticsEvent: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a2 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a2 === void 0 ? void 0 : _pluginInjectionApi$a2.actions.fireAnalyticsEvent,
386
+ onClickCallback,
387
+ url,
388
+ event: reactMouseEvent
367
389
  });
368
- if (url) {
369
- try {
370
- onClickCallback === null || onClickCallback === void 0 ? void 0 : onClickCallback({
371
- event,
372
- url
373
- });
374
- } catch {}
375
-
376
- /**
377
- * Links should navigate by default in live pages if:
378
- * - the link is the direct target of the click event
379
- * - default handling wasn't prevented with `event.preventDefault()`
380
- */
381
- if (!event.defaultPrevented) {
382
- window.location.href = url;
383
- }
384
- }
385
390
  }
386
391
  };
387
392
  return {
@@ -6,7 +6,8 @@ export var ButtonWrapper = function ButtonWrapper(_ref) {
6
6
  var editorView = _ref.editorView,
7
7
  pos = _ref.pos,
8
8
  stateKey = _ref.stateKey,
9
- intl = _ref.intl;
9
+ intl = _ref.intl,
10
+ onOpenLinkClick = _ref.onOpenLinkClick;
10
11
  var wrapper = document.createElement('span');
11
12
  wrapper.style.position = 'relative';
12
13
  var nonBreakingCharacter = "\u2060";
@@ -23,7 +24,8 @@ export var ButtonWrapper = function ButtonWrapper(_ref) {
23
24
  }, /*#__PURE__*/React.createElement(OverlayButton, {
24
25
  targetElementPos: pos,
25
26
  editorView: editorView,
26
- onDropdownChange: onDropdownChange
27
+ onDropdownChange: onDropdownChange,
28
+ onOpenLinkClick: onOpenLinkClick
27
29
  }), nonBreakingCharacter), wrapper);
28
30
  return wrapper;
29
31
  };
@@ -2,8 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  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; }
3
3
  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) { _defineProperty(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; }
4
4
  import uuid from 'uuid';
5
- import { ACTION, ACTION_SUBJECT, EVENT_TYPE, MODE, PLATFORMS } from '@atlaskit/editor-common/analytics';
6
- import { InsertStatus, LinkAction } from '@atlaskit/editor-common/link';
5
+ import { handleNavigation, InsertStatus, LinkAction } from '@atlaskit/editor-common/link';
7
6
  import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
8
7
  import { canLinkBeCreatedInRange, shallowEqual } from '@atlaskit/editor-common/utils';
9
8
  import { DOMSerializer } from '@atlaskit/editor-prosemirror/model';
@@ -221,7 +220,29 @@ export var plugin = function plugin(dispatch, intl, editorAppearance, pluginInje
221
220
  editorView: view,
222
221
  pos: configureButtonTargetPos,
223
222
  stateKey: stateKey,
224
- intl: intl
223
+ intl: intl,
224
+ onOpenLinkClick: function onOpenLinkClick(event) {
225
+ var _node$marks$find, _pluginInjectionApi$a;
226
+ if (configureButtonTargetPos === undefined || typeof configureButtonTargetPos !== 'number') {
227
+ return;
228
+ }
229
+ var node = view.state.tr.doc.nodeAt(configureButtonTargetPos);
230
+ if (node === null) {
231
+ return;
232
+ }
233
+ var url = (_node$marks$find = node.marks.find(function (mark) {
234
+ return mark.type.name === 'link';
235
+ })) === null || _node$marks$find === void 0 ? void 0 : _node$marks$find.attrs.href;
236
+ if (!url) {
237
+ return;
238
+ }
239
+ handleNavigation({
240
+ fireAnalyticsEvent: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a === void 0 ? void 0 : _pluginInjectionApi$a.actions.fireAnalyticsEvent,
241
+ onClickCallback: onClickCallback,
242
+ url: url,
243
+ event: event
244
+ });
245
+ }
225
246
  });
226
247
  });
227
248
  _decorations = DecorationSet.create(newState.doc, [decoration]);
@@ -317,10 +338,13 @@ export var plugin = function plugin(dispatch, intl, editorAppearance, pluginInje
317
338
  dom.onmouseenter = function () {
318
339
  var _stateKey$getState2;
319
340
  var _ref2 = (_stateKey$getState2 = stateKey.getState(view.state)) !== null && _stateKey$getState2 !== void 0 ? _stateKey$getState2 : {},
341
+ activeLinkMark = _ref2.activeLinkMark,
320
342
  configureButtonTargetPos = _ref2.configureButtonTargetPos;
321
- var nodePos = view.posAtDOM(dom, -1);
322
- if (nodePos !== configureButtonTargetPos) {
323
- setTargetElementPos(nodePos);
343
+ if (!activeLinkMark) {
344
+ var nodePos = view.posAtDOM(dom, -1);
345
+ if (nodePos !== configureButtonTargetPos) {
346
+ setTargetElementPos(nodePos);
347
+ }
324
348
  }
325
349
  };
326
350
  dom.onmouseleave = function () {
@@ -333,34 +357,17 @@ export var plugin = function plugin(dispatch, intl, editorAppearance, pluginInje
333
357
  };
334
358
  dom.onclick = function (event) {
335
359
  if (isDirectTarget(event, dom)) {
336
- var _pluginInjectionApi$a, _pluginInjectionApi$a2;
360
+ var _pluginInjectionApi$a2;
337
361
  var url = mark.attrs.href;
338
- pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a === void 0 || (_pluginInjectionApi$a = _pluginInjectionApi$a.actions) === null || _pluginInjectionApi$a === void 0 || (_pluginInjectionApi$a2 = _pluginInjectionApi$a.fireAnalyticsEvent) === null || _pluginInjectionApi$a2 === void 0 || _pluginInjectionApi$a2.call(_pluginInjectionApi$a, {
339
- action: ACTION.VISITED,
340
- actionSubject: ACTION_SUBJECT.LINK,
341
- eventType: EVENT_TYPE.TRACK,
342
- attributes: {
343
- platform: PLATFORMS.WEB,
344
- mode: MODE.EDITOR
345
- }
362
+ // event is globalThis.MouseEvent, while handleNavigation
363
+ // (and editor-common OnClickCallback) require React.MouseEvent
364
+ var reactMouseEvent = event;
365
+ handleNavigation({
366
+ fireAnalyticsEvent: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a2 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a2 === void 0 ? void 0 : _pluginInjectionApi$a2.actions.fireAnalyticsEvent,
367
+ onClickCallback: onClickCallback,
368
+ url: url,
369
+ event: reactMouseEvent
346
370
  });
347
- if (url) {
348
- try {
349
- onClickCallback === null || onClickCallback === void 0 || onClickCallback({
350
- event: event,
351
- url: url
352
- });
353
- } catch (_unused) {}
354
-
355
- /**
356
- * Links should navigate by default in live pages if:
357
- * - the link is the direct target of the click event
358
- * - default handling wasn't prevented with `event.preventDefault()`
359
- */
360
- if (!event.defaultPrevented) {
361
- window.location.href = url;
362
- }
363
- }
364
371
  }
365
372
  };
366
373
  return {
@@ -1,10 +1,13 @@
1
+ import { type MouseEvent } from 'react';
1
2
  import { type IntlShape } from 'react-intl-next';
2
3
  import { type HyperlinkState } from '@atlaskit/editor-common/link';
3
4
  import { type PluginKey } from '@atlaskit/editor-prosemirror/state';
4
5
  import { type EditorView } from '@atlaskit/editor-prosemirror/view';
5
- export declare const ButtonWrapper: ({ editorView, pos, stateKey, intl, }: {
6
+ export declare const ButtonWrapper: ({ editorView, pos, stateKey, intl, onOpenLinkClick, }: {
6
7
  editorView: EditorView;
7
8
  pos?: number | undefined;
8
9
  stateKey: PluginKey<HyperlinkState>;
9
10
  intl: IntlShape;
11
+ /** Callback fired when the Open Link dropdown item is clicked */
12
+ onOpenLinkClick: (event: MouseEvent<HTMLAnchorElement>) => void;
10
13
  }) => HTMLSpanElement;
@@ -1,10 +1,13 @@
1
+ import { type MouseEvent } from 'react';
1
2
  import { type IntlShape } from 'react-intl-next';
2
3
  import { type HyperlinkState } from '@atlaskit/editor-common/link';
3
4
  import { type PluginKey } from '@atlaskit/editor-prosemirror/state';
4
5
  import { type EditorView } from '@atlaskit/editor-prosemirror/view';
5
- export declare const ButtonWrapper: ({ editorView, pos, stateKey, intl, }: {
6
+ export declare const ButtonWrapper: ({ editorView, pos, stateKey, intl, onOpenLinkClick, }: {
6
7
  editorView: EditorView;
7
8
  pos?: number | undefined;
8
9
  stateKey: PluginKey<HyperlinkState>;
9
10
  intl: IntlShape;
11
+ /** Callback fired when the Open Link dropdown item is clicked */
12
+ onOpenLinkClick: (event: MouseEvent<HTMLAnchorElement>) => void;
10
13
  }) => HTMLSpanElement;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-hyperlink",
3
- "version": "2.6.1",
3
+ "version": "2.7.0",
4
4
  "description": "Hyperlink plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -34,12 +34,12 @@
34
34
  "dependencies": {
35
35
  "@atlaskit/adf-schema": "^40.3.0",
36
36
  "@atlaskit/analytics-next": "^9.3.0",
37
- "@atlaskit/editor-common": "^87.0.0",
37
+ "@atlaskit/editor-common": "^87.2.0",
38
38
  "@atlaskit/editor-plugin-analytics": "^1.6.0",
39
- "@atlaskit/editor-plugin-card": "2.8.1",
39
+ "@atlaskit/editor-plugin-card": "2.9.0",
40
40
  "@atlaskit/editor-plugin-editor-viewmode": "^2.1.0",
41
41
  "@atlaskit/editor-prosemirror": "5.0.1",
42
- "@atlaskit/icon": "^22.7.0",
42
+ "@atlaskit/icon": "^22.8.0",
43
43
  "@atlaskit/platform-feature-flags": "^0.3.0",
44
44
  "@atlaskit/prosemirror-input-rules": "^3.2.0",
45
45
  "@babel/runtime": "^7.0.0",