@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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @atlaskit/editor-core
2
2
 
3
+ ## 187.20.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`24f092238be`](https://bitbucket.org/atlassian/atlassian-frontend/commits/24f092238be) - NO-ISSUE Switch collab type imports in editor-core to editor-common
8
+ - [`469b5c12303`](https://bitbucket.org/atlassian/atlassian-frontend/commits/469b5c12303) - NO-ISSUE Move CollabEventLocalStepData to editor-common
9
+ - [`c2cd174b721`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c2cd174b721) - - Add layout calculation in full width editor
10
+ - Prevent scroll bar for wrapped layout in small viewport
11
+ - Limit resizing for nested node with wrapped layout
12
+ - Update size state for full-width layout to avoid flicker when first resizing
13
+ - [`da58165fe10`](https://bitbucket.org/atlassian/atlassian-frontend/commits/da58165fe10) - [ux] ED-19440 - Adds dark mode icons for bullet list, numbered list, quote, status and table
14
+
15
+ ## 187.20.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [`644c7942b34`](https://bitbucket.org/atlassian/atlassian-frontend/commits/644c7942b34) - [ux] support updating pixel entry in media toolbar when resize media single
20
+ - [`43c51e0a282`](https://bitbucket.org/atlassian/atlassian-frontend/commits/43c51e0a282) - [ED-19431] Migrate all text-formatting plugin actions over to plugin commands
21
+ - [`a867b562d62`](https://bitbucket.org/atlassian/atlassian-frontend/commits/a867b562d62) - Add insertEmoji command and sharedState to emoji plugin.
22
+
23
+ ### Patch Changes
24
+
25
+ - [`8375e041861`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8375e041861) - [ED-16733] Extract common functions used by media plugin to editor-common
26
+ - Updated dependencies
27
+
3
28
  ## 187.19.1
4
29
 
5
30
  ### Patch Changes
@@ -14,32 +14,33 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
14
14
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
15
15
  var insertEmoji = function insertEmoji(editorAnalyticsAPI) {
16
16
  return function (emojiId, inputMethod) {
17
- return function (state, dispatch) {
18
- var emoji = state.schema.nodes.emoji;
17
+ return function (_ref) {
18
+ var tr = _ref.tr;
19
+ var doc = tr.doc,
20
+ selection = tr.selection;
21
+ var emoji = tr.doc.type.schema.nodes.emoji;
19
22
  if (emoji && emojiId) {
20
23
  var node = emoji.createChecked(_objectSpread(_objectSpread({}, emojiId), {}, {
21
24
  text: emojiId.fallback || emojiId.shortName
22
25
  }));
23
- var textNode = state.schema.text(' ');
24
- if (dispatch) {
25
- var fragment = _model.Fragment.fromArray([node, textNode]);
26
- var tr = (0, _utils.safeInsert)(fragment)(state.tr);
27
- if (inputMethod) {
28
- editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent({
29
- action: _analytics.ACTION.INSERTED,
30
- actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
31
- actionSubjectId: _analytics.ACTION_SUBJECT_ID.EMOJI,
32
- attributes: {
33
- inputMethod: inputMethod
34
- },
35
- eventType: _analytics.EVENT_TYPE.TRACK
36
- })(tr);
37
- }
38
- dispatch(tr.setSelection(_state.Selection.near(tr.doc.resolve(state.selection.$from.pos + fragment.size))));
26
+ var textNode = doc.type.schema.text(' ');
27
+ var fragment = _model.Fragment.fromArray([node, textNode]);
28
+ var newTr = (0, _utils.safeInsert)(fragment)(tr);
29
+ if (inputMethod) {
30
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent({
31
+ action: _analytics.ACTION.INSERTED,
32
+ actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
33
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.EMOJI,
34
+ attributes: {
35
+ inputMethod: inputMethod
36
+ },
37
+ eventType: _analytics.EVENT_TYPE.TRACK
38
+ })(newTr);
39
39
  }
40
- return true;
40
+ newTr.setSelection(_state.Selection.near(newTr.doc.resolve(selection.$from.pos + fragment.size)));
41
+ return newTr;
41
42
  }
42
- return false;
43
+ return null;
43
44
  };
44
45
  };
45
46
  };
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.ACTIONS = void 0;
8
8
  exports.createEmojiPlugin = createEmojiPlugin;
9
- exports.emojiToTypeaheadItem = exports.emojiPluginKey = exports.defaultListLimit = exports.default = void 0;
9
+ exports.emojiToTypeaheadItem = exports.emojiPluginKey = exports.emojiPlugin = exports.defaultListLimit = void 0;
10
10
  exports.getEmojiPluginState = getEmojiPluginState;
11
11
  exports.memoize = memoize;
12
12
  exports.setProvider = void 0;
@@ -25,6 +25,7 @@ var _quickInsert = require("@atlaskit/editor-common/quick-insert");
25
25
  var _emoji3 = require("./nodeviews/emoji");
26
26
  var _messages = require("../insert-block/ui/ToolbarInsertBlock/messages");
27
27
  var _openTypeaheadAtCursor = require("../type-ahead/transforms/open-typeahead-at-cursor");
28
+ var _insertEmoji = require("./commands/insert-emoji");
28
29
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
29
30
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
30
31
  var emojiToTypeaheadItem = function emojiToTypeaheadItem(emoji, emojiProvider) {
@@ -75,6 +76,7 @@ var isFullShortName = function isFullShortName(query) {
75
76
  };
76
77
  var TRIGGER = ':';
77
78
  var emojiPlugin = function emojiPlugin(options, api) {
79
+ var _api$dependencies$ana9;
78
80
  var typeAhead = {
79
81
  id: _typeAhead.TypeAheadAvailableNodes.EMOJI,
80
82
  trigger: TRIGGER,
@@ -196,6 +198,15 @@ var emojiPlugin = function emojiPlugin(options, api) {
196
198
  }
197
199
  }];
198
200
  },
201
+ getSharedState: function getSharedState(editorState) {
202
+ if (!editorState) {
203
+ return undefined;
204
+ }
205
+ return emojiPluginKey.getState(editorState);
206
+ },
207
+ commands: {
208
+ insertEmoji: (0, _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)
209
+ },
199
210
  pluginsOptions: {
200
211
  quickInsert: function quickInsert(_ref7) {
201
212
  var formatMessage = _ref7.formatMessage;
@@ -209,13 +220,13 @@ var emojiPlugin = function emojiPlugin(options, api) {
209
220
  return /*#__PURE__*/_react.default.createElement(_quickInsert.IconEmoji, null);
210
221
  },
211
222
  action: function action(insert, state) {
212
- var _api$dependencies$ana9;
223
+ var _api$dependencies$ana10;
213
224
  var tr = insert(undefined);
214
225
  (0, _openTypeaheadAtCursor.openTypeAheadAtCursor)({
215
226
  triggerHandler: typeAhead,
216
227
  inputMethod: _analytics.INPUT_METHOD.QUICK_INSERT
217
228
  })(tr);
218
- 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({
229
+ 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({
219
230
  action: _analytics.ACTION.INVOKED,
220
231
  actionSubject: _analytics.ACTION_SUBJECT.TYPEAHEAD,
221
232
  actionSubjectId: _analytics.ACTION_SUBJECT_ID.TYPEAHEAD_EMOJI,
@@ -232,11 +243,11 @@ var emojiPlugin = function emojiPlugin(options, api) {
232
243
  }
233
244
  };
234
245
  };
235
- var _default = emojiPlugin;
246
+
236
247
  /**
237
248
  * Actions
238
249
  */
239
- exports.default = _default;
250
+ exports.emojiPlugin = emojiPlugin;
240
251
  var ACTIONS = {
241
252
  SET_PROVIDER: 'SET_PROVIDER',
242
253
  SET_RESULTS: 'SET_RESULTS',
@@ -134,7 +134,7 @@ Object.defineProperty(exports, "datePlugin", {
134
134
  Object.defineProperty(exports, "emojiPlugin", {
135
135
  enumerable: true,
136
136
  get: function get() {
137
- return _emoji.default;
137
+ return _emoji.emojiPlugin;
138
138
  }
139
139
  });
140
140
  Object.defineProperty(exports, "expandPlugin", {
@@ -378,7 +378,7 @@ var _clearMarksOnChangeToEmptyDocument = _interopRequireDefault(require("./clear
378
378
  var _codeBlock = _interopRequireDefault(require("./code-block"));
379
379
  var _collabEdit = _interopRequireDefault(require("./collab-edit"));
380
380
  var _date = _interopRequireDefault(require("./date"));
381
- var _emoji = _interopRequireDefault(require("./emoji"));
381
+ var _emoji = require("./emoji");
382
382
  var _extension = _interopRequireDefault(require("./extension"));
383
383
  var _fakeTextCursor = _interopRequireDefault(require("./fake-text-cursor"));
384
384
  var _helpDialog = _interopRequireDefault(require("./help-dialog"));
@@ -12,7 +12,6 @@ var _pluginKey = require("../media/pm-plugins/plugin-key");
12
12
  var _utils = require("../type-ahead/utils");
13
13
  var _layout = require("../layout");
14
14
  var _macro = require("../macro");
15
- var _emoji = require("../emoji");
16
15
  var _WithPluginState = _interopRequireDefault(require("../../ui/WithPluginState"));
17
16
  var _ToolbarInsertBlock = _interopRequireDefault(require("./ui/ToolbarInsertBlock"));
18
17
  var _key = require("../type-ahead/pm-plugins/key");
@@ -72,7 +71,6 @@ var insertBlockPlugin = function insertBlockPlugin() {
72
71
  blockTypeState: _main.pluginKey,
73
72
  mediaState: _pluginKey.stateKey,
74
73
  macroState: _pluginKey3.pluginKey,
75
- emojiState: _emoji.emojiPluginKey,
76
74
  placeholderTextState: _pluginKey2.pluginKey,
77
75
  layoutState: _layout.pluginKey
78
76
  },
@@ -81,7 +79,6 @@ var insertBlockPlugin = function insertBlockPlugin() {
81
79
  mediaState = _ref2.mediaState,
82
80
  _ref2$macroState = _ref2.macroState,
83
81
  macroState = _ref2$macroState === void 0 ? {} : _ref2$macroState,
84
- emojiState = _ref2.emojiState,
85
82
  placeholderTextState = _ref2.placeholderTextState,
86
83
  layoutState = _ref2.layoutState;
87
84
  return /*#__PURE__*/_react.default.createElement(ToolbarInsertBlockWithInjectionApi, {
@@ -101,7 +98,6 @@ var insertBlockPlugin = function insertBlockPlugin() {
101
98
  blockTypeState: blockTypeState,
102
99
  mediaState: mediaState,
103
100
  macroState: macroState,
104
- emojiState: emojiState,
105
101
  placeholderTextState: placeholderTextState,
106
102
  layoutState: layoutState,
107
103
  providers: providers,
@@ -137,16 +133,16 @@ function ToolbarInsertBlockWithInjectionApi(_ref3) {
137
133
  blockTypeState = _ref3.blockTypeState,
138
134
  mediaState = _ref3.mediaState,
139
135
  macroState = _ref3.macroState,
140
- emojiState = _ref3.emojiState,
141
136
  placeholderTextState = _ref3.placeholderTextState,
142
137
  layoutState = _ref3.layoutState,
143
138
  featureFlags = _ref3.featureFlags;
144
139
  var buttons = toolbarSizeToButtons(toolbarSize);
145
- var _useSharedPluginState = (0, _hooks.useSharedPluginState)(pluginInjectionApi, ['hyperlink', 'date', 'imageUpload', 'mention']),
140
+ var _useSharedPluginState = (0, _hooks.useSharedPluginState)(pluginInjectionApi, ['hyperlink', 'date', 'imageUpload', 'mention', 'emoji']),
146
141
  dateState = _useSharedPluginState.dateState,
147
142
  hyperlinkState = _useSharedPluginState.hyperlinkState,
148
143
  imageUploadState = _useSharedPluginState.imageUploadState,
149
- mentionState = _useSharedPluginState.mentionState;
144
+ mentionState = _useSharedPluginState.mentionState,
145
+ emojiState = _useSharedPluginState.emojiState;
150
146
  return /*#__PURE__*/_react.default.createElement(_ToolbarInsertBlock.default, {
151
147
  pluginInjectionApi: pluginInjectionApi,
152
148
  buttons: buttons,
@@ -29,8 +29,7 @@ var _commands2 = require("../../../tasks-and-decisions/commands");
29
29
  var _commands3 = require("../../../expand/commands");
30
30
  var _api = require("../../../type-ahead/api");
31
31
  var _actions4 = require("../../../status/actions");
32
- var _analytics = require("../../../analytics");
33
- var _insertEmoji = require("../../../emoji/commands/insert-emoji");
32
+ var _analytics = require("@atlaskit/editor-common/analytics");
34
33
  var _messages = require("./messages");
35
34
  var _createItems3 = require("./create-items");
36
35
  var _blockInsertMenu = require("./block-insert-menu");
@@ -282,8 +281,10 @@ var ToolbarInsertBlock = /*#__PURE__*/function (_React$PureComponent) {
282
281
  };
283
282
  });
284
283
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleSelectedEmoji", function (emojiId) {
284
+ var _pluginInjectionApi$d8;
285
+ var pluginInjectionApi = _this.props.pluginInjectionApi;
285
286
  _this.props.editorView.focus();
286
- (0, _insertEmoji.insertEmoji)(_this.editorAnalyticsAPI)(emojiId, _analytics.INPUT_METHOD.PICKER)(_this.props.editorView.state, _this.props.editorView.dispatch);
287
+ 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, _analytics.INPUT_METHOD.PICKER));
287
288
  _this.toggleEmojiPicker();
288
289
  return true;
289
290
  });
@@ -24,6 +24,7 @@ var _ui = require("@atlaskit/editor-common/ui");
24
24
  var _utils = require("@atlaskit/editor-common/utils");
25
25
  var _nodes = require("../../../utils/nodes");
26
26
  var _utils2 = require("../../../utils");
27
+ var _mediaSingle = require("../utils/media-single");
27
28
  var _ResizableMediaSingleNext = _interopRequireDefault(require("../ui/ResizableMediaSingle/ResizableMediaSingleNext"));
28
29
  var _ResizableMediaSingle = _interopRequireDefault(require("../ui/ResizableMediaSingle"));
29
30
  var _main = require("../pm-plugins/main");
@@ -39,7 +40,7 @@ var _CaptionPlaceholder = _interopRequireDefault(require("../ui/CaptionPlacehold
39
40
  var _state = require("@atlaskit/editor-prosemirror/state");
40
41
  var _captions = require("../commands/captions");
41
42
  var _hooks = require("@atlaskit/editor-common/hooks");
42
- var _mediaSingle = require("@atlaskit/editor-common/media-single");
43
+ var _mediaSingle2 = require("@atlaskit/editor-common/media-single");
43
44
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
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; }
@@ -254,13 +255,12 @@ var MediaSingleNode = /*#__PURE__*/function (_Component) {
254
255
  * Get parent width for a nested media single node
255
256
  * @param view Editor view
256
257
  * @param pos node position
257
- * @param includeMoreParentNodeTypes should consider table and list as parent nodes(only true for new experience)
258
258
  */
259
259
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getLineLength", function (view, pos, includeMoreParentNodeTypes) {
260
260
  if (typeof pos !== 'number') {
261
261
  return null;
262
262
  }
263
- if ((0, _utils.isRichMediaInsideOfBlockNode)(view, pos, includeMoreParentNodeTypes)) {
263
+ if ((0, _utils.isRichMediaInsideOfBlockNode)(view, pos)) {
264
264
  var $pos = view.state.doc.resolve(pos);
265
265
  var domNode = view.nodeDOM($pos.pos);
266
266
  if ($pos.nodeAfter && _utils.floatingLayouts.indexOf($pos.nodeAfter.attrs.layout) > -1 && domNode && domNode.parentElement) {
@@ -272,6 +272,21 @@ var MediaSingleNode = /*#__PURE__*/function (_Component) {
272
272
  }
273
273
  return null;
274
274
  });
275
+ /**
276
+ * Get parent width for a nested media single node for new experience
277
+ * @param view Editor view
278
+ * @param pos node position
279
+ */
280
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getLineLengthNext", function (view, pos) {
281
+ if (typeof pos !== 'number') {
282
+ return null;
283
+ }
284
+ var $pos = view.state.doc.resolve(pos);
285
+ if ($pos && $pos.parent.type.name !== 'doc') {
286
+ return (0, _mediaSingle.getParentWidthForNestedMediaSingleNode)($pos, view);
287
+ }
288
+ return null;
289
+ });
275
290
  return _this;
276
291
  }
277
292
  (0, _createClass2.default)(MediaSingleNode, [{
@@ -361,19 +376,19 @@ var MediaSingleNode = /*#__PURE__*/function (_Component) {
361
376
  stateWidth = _this$state.width,
362
377
  stateHeight = _this$state.height;
363
378
  if (width === null) {
364
- width = stateWidth || _mediaSingle.DEFAULT_IMAGE_WIDTH;
379
+ width = stateWidth || _mediaSingle2.DEFAULT_IMAGE_WIDTH;
365
380
  }
366
381
  if (height === null) {
367
- height = stateHeight || _mediaSingle.DEFAULT_IMAGE_HEIGHT;
382
+ height = stateHeight || _mediaSingle2.DEFAULT_IMAGE_HEIGHT;
368
383
  }
369
384
  }
370
385
  if (!width || !height) {
371
- width = _mediaSingle.DEFAULT_IMAGE_WIDTH;
372
- height = _mediaSingle.DEFAULT_IMAGE_HEIGHT;
386
+ width = _mediaSingle2.DEFAULT_IMAGE_WIDTH;
387
+ height = _mediaSingle2.DEFAULT_IMAGE_HEIGHT;
373
388
  }
374
389
  var isSelected = selected();
375
390
  var contentWidthForLegacyExperience = this.getLineLength(view, getPos()) || lineLength;
376
- var contentWidth = this.getLineLength(view, getPos(), true) || lineLength;
391
+ var contentWidth = this.getLineLengthNext(view, getPos()) || lineLength;
377
392
  var mediaSingleProps = {
378
393
  layout: layout,
379
394
  width: width,
@@ -383,7 +398,7 @@ var MediaSingleNode = /*#__PURE__*/function (_Component) {
383
398
  pctWidth: mediaSingleWidthAttribute,
384
399
  fullWidthMode: fullWidthMode,
385
400
  hasFallbackContainer: false,
386
- mediaSingleWidth: (0, _mediaSingle.calcMediaSinglePixelWidth)({
401
+ mediaSingleWidth: (0, _mediaSingle2.calcMediaSinglePixelWidth)({
387
402
  width: mediaSingleWidthAttribute,
388
403
  widthType: widthType,
389
404
  origWidth: width,
@@ -392,7 +407,7 @@ var MediaSingleNode = /*#__PURE__*/function (_Component) {
392
407
  // thus we use the legecy value (exclude table as container node)
393
408
  contentWidth: contentWidthForLegacyExperience,
394
409
  containerWidth: containerWidth,
395
- gutterOffset: _mediaSingle.MEDIA_SINGLE_GUTTER_SIZE
410
+ gutterOffset: _mediaSingle2.MEDIA_SINGLE_GUTTER_SIZE
396
411
  })
397
412
  };
398
413
  var resizableMediaSingleProps = _objectSpread({
@@ -510,6 +525,9 @@ var MediaSingleNodeView = /*#__PURE__*/function (_ReactNodeView) {
510
525
  // see also: https://github.com/ProseMirror/prosemirror/issues/884
511
526
  domRef.contentEditable = 'true';
512
527
  }
528
+ if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.media.extended-resize-experience')) {
529
+ domRef.classList.add('media-extended-resize-experience');
530
+ }
513
531
  return domRef;
514
532
  }
515
533
  }, {
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.getMediaPluginState = exports.createPlugin = exports.MediaPluginStateImplementation = exports.MEDIA_PLUGIN_IS_RESIZING_KEY = exports.MEDIA_CONTENT_WRAP_CLASS_NAME = void 0;
8
+ exports.getMediaPluginState = exports.createPlugin = exports.MediaPluginStateImplementation = exports.MEDIA_PLUGIN_RESIZING_WIDTH_KEY = exports.MEDIA_PLUGIN_IS_RESIZING_KEY = exports.MEDIA_CONTENT_WRAP_CLASS_NAME = void 0;
9
9
  Object.defineProperty(exports, "stateKey", {
10
10
  enumerable: true,
11
11
  get: function get() {
@@ -52,6 +52,8 @@ var MEDIA_CONTENT_WRAP_CLASS_NAME = 'media-content-wrap';
52
52
  exports.MEDIA_CONTENT_WRAP_CLASS_NAME = MEDIA_CONTENT_WRAP_CLASS_NAME;
53
53
  var MEDIA_PLUGIN_IS_RESIZING_KEY = 'mediaSinglePlugin.isResizing';
54
54
  exports.MEDIA_PLUGIN_IS_RESIZING_KEY = MEDIA_PLUGIN_IS_RESIZING_KEY;
55
+ var MEDIA_PLUGIN_RESIZING_WIDTH_KEY = 'mediaSinglePlugin.resizing-width';
56
+ exports.MEDIA_PLUGIN_RESIZING_WIDTH_KEY = MEDIA_PLUGIN_RESIZING_WIDTH_KEY;
55
57
  var createDropPlaceholder = function createDropPlaceholder(intl, allowDropLine) {
56
58
  var dropPlaceholder = document.createElement('div');
57
59
  var createElement = _react.default.createElement;
@@ -82,6 +84,7 @@ var MediaPluginStateImplementation = /*#__PURE__*/function () {
82
84
  (0, _defineProperty2.default)(this, "layout", 'center');
83
85
  (0, _defineProperty2.default)(this, "mediaNodes", []);
84
86
  (0, _defineProperty2.default)(this, "isResizing", false);
87
+ (0, _defineProperty2.default)(this, "resizingWidth", 0);
85
88
  (0, _defineProperty2.default)(this, "destroyed", false);
86
89
  (0, _defineProperty2.default)(this, "removeOnCloseListener", function () {});
87
90
  (0, _defineProperty2.default)(this, "onPopupToggleCallback", function () {});
@@ -501,6 +504,11 @@ var MediaPluginStateImplementation = /*#__PURE__*/function () {
501
504
  value: function setIsResizing(isResizing) {
502
505
  this.isResizing = isResizing;
503
506
  }
507
+ }, {
508
+ key: "setResizingWidth",
509
+ value: function setResizingWidth(width) {
510
+ this.resizingWidth = width;
511
+ }
504
512
  }, {
505
513
  key: "updateElement",
506
514
  value: function updateElement() {
@@ -644,9 +652,13 @@ var createPlugin = function createPlugin(_schema, options, reactContext, getIntl
644
652
  },
645
653
  apply: function apply(tr, pluginState) {
646
654
  var isResizing = tr.getMeta(MEDIA_PLUGIN_IS_RESIZING_KEY);
655
+ var resizingWidth = tr.getMeta(MEDIA_PLUGIN_RESIZING_WIDTH_KEY);
647
656
  if (isResizing !== undefined) {
648
657
  pluginState.setIsResizing(isResizing);
649
658
  }
659
+ if (resizingWidth) {
660
+ pluginState.setResizingWidth(resizingWidth);
661
+ }
650
662
 
651
663
  // remap editing media single position if we're in collab
652
664
  if (typeof pluginState.editingMediaSinglePos === 'number') {
@@ -12,7 +12,7 @@ var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
12
12
  var _colors = require("@atlaskit/theme/colors");
13
13
  var _mediaCard = require("@atlaskit/media-card");
14
14
  var _templateObject;
15
- var mediaStyles = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n .ProseMirror {\n ", " & [layout='full-width'] .", ",\n & [layout='wide'] .", " {\n margin-left: 50%;\n transform: translateX(-50%);\n }\n\n & [layout^='wrap-'] + [layout^='wrap-'] {\n clear: none;\n & + p,\n & + div[class^='fabric-editor-align'],\n & + ul,\n & + ol,\n & + h1,\n & + h2,\n & + h3,\n & + h4,\n & + h5,\n & + h6 {\n clear: both !important;\n }\n & .", " {\n margin-left: 0;\n margin-right: 0;\n }\n }\n\n .mediaSingleView-content-wrap[layout^='wrap-'] {\n max-width: 100%;\n // overwrite default Prosemirror setting making it clear: both\n clear: inherit;\n }\n\n .mediaSingleView-content-wrap[layout='wrap-left'] {\n float: left;\n }\n\n .mediaSingleView-content-wrap[layout='wrap-right'] {\n float: right;\n }\n\n .mediaSingleView-content-wrap[layout='wrap-right']\n + .mediaSingleView-content-wrap[layout='wrap-left'] {\n clear: both;\n }\n\n /* Larger margins for resize handlers when at depth 0 of the document */\n & > .mediaSingleView-content-wrap {\n .richMedia-resize-handle-right {\n margin-right: -", "px;\n }\n .richMedia-resize-handle-left {\n margin-left: -", "px;\n }\n }\n }\n\n .richMedia-resize-handle-right,\n .richMedia-resize-handle-left {\n display: flex;\n flex-direction: column;\n\n /* vertical align */\n justify-content: center;\n }\n\n .richMedia-resize-handle-right {\n align-items: flex-end;\n padding-right: 12px;\n margin-right: -", "px;\n }\n\n .richMedia-resize-handle-left {\n align-items: flex-start;\n padding-left: 12px;\n margin-left: -", "px;\n }\n\n .richMedia-resize-handle-right::after,\n .richMedia-resize-handle-left::after {\n content: ' ';\n display: flex;\n width: 3px;\n height: 64px;\n\n border-radius: 6px;\n }\n\n .", ":hover .richMedia-resize-handle-left::after,\n .", ":hover .richMedia-resize-handle-right::after {\n background: ", ";\n }\n\n .", " .richMedia-resize-handle-right::after,\n .", " .richMedia-resize-handle-left::after,\n .", " .richMedia-resize-handle-right:hover::after,\n .", " .richMedia-resize-handle-left:hover::after,\n .", ".is-resizing .richMedia-resize-handle-right::after,\n .", ".is-resizing .richMedia-resize-handle-left::after {\n background: ", ";\n }\n\n .__resizable_base__ {\n left: unset !important;\n width: auto !important;\n height: auto !important;\n }\n\n /* Danger when top level node for smart cards / inline links */\n .danger > div > div > .media-card-frame,\n .danger > span > a {\n background-color: ", ";\n box-shadow: 0px 0px 0px ", "px\n ", ";\n transition: background-color 0s, box-shadow 0s;\n }\n /* Danger when nested node or common */\n .danger {\n /* Media single */\n .", " .", "::after {\n border: 1px solid ", ";\n }\n /* Media single video player */\n .", " .", "::after {\n border: 1px solid ", ";\n }\n /* New file experience */\n .", " .", " {\n box-shadow: 0 0 0 1px\n ", " !important;\n }\n /* Media resize handlers */\n .richMedia-resize-handle-right::after,\n .richMedia-resize-handle-left::after {\n background: ", ";\n }\n\n /* Smart cards */\n div div .media-card-frame,\n .inlineCardView-content-wrap > span > a {\n background-color: ", "; /* R75 with 50% opactiy */\n transition: background-color 0s;\n }\n\n div div .media-card-frame::after {\n box-shadow: none;\n }\n }\n"])), _styles.mediaSingleSharedStyle, _styles.richMediaClassName, _styles.richMediaClassName, _styles.richMediaClassName, _editorSharedStyles.akEditorMediaResizeHandlerPaddingWide, _editorSharedStyles.akEditorMediaResizeHandlerPaddingWide, _editorSharedStyles.akEditorMediaResizeHandlerPadding, _editorSharedStyles.akEditorMediaResizeHandlerPadding, _styles.richMediaClassName, _styles.richMediaClassName, "var(--ds-border, ".concat(_colors.N60, ")"), _editorSharedStyles.akEditorSelectedNodeClassName, _editorSharedStyles.akEditorSelectedNodeClassName, _styles.richMediaClassName, _styles.richMediaClassName, _styles.richMediaClassName, _styles.richMediaClassName, "var(--ds-border-focused, ".concat(_colors.B200, ")"), "var(--ds-background-danger, ".concat(_editorSharedStyles.akEditorDeleteBackground, ")"), _editorSharedStyles.akEditorSelectedBorderBoldSize, "var(--ds-border-danger, ".concat(_editorSharedStyles.akEditorDeleteBorder, ")"), _styles.richMediaClassName, _mediaCard.fileCardImageViewSelector, "var(--ds-border-danger, ".concat(_editorSharedStyles.akEditorDeleteIconColor, ")"), _styles.richMediaClassName, _mediaCard.inlinePlayerClassName, "var(--ds-border-danger, ".concat(_editorSharedStyles.akEditorDeleteIconColor, ")"), _styles.richMediaClassName, _mediaCard.newFileExperienceClassName, "var(--ds-border-danger, ".concat(_editorSharedStyles.akEditorDeleteIconColor, ")"), "var(--ds-icon-danger, ".concat(_editorSharedStyles.akEditorDeleteIconColor, ")"), "var(--ds-blanket-danger, rgb(255, 189, 173, 0.5))");
15
+ var mediaStyles = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n .ProseMirror {\n ", " & [layout='full-width'] .", ",\n & [layout='wide'] .", " {\n margin-left: 50%;\n transform: translateX(-50%);\n }\n\n .media-extended-resize-experience[layout^='wrap-'] {\n // override 'overflow: auto' when viewport <= 410 set by mediaSingleSharedStyle\n // to prevent scroll bar\n overflow: visible !important;\n }\n\n & [layout^='wrap-'] + [layout^='wrap-'] {\n clear: none;\n & + p,\n & + div[class^='fabric-editor-align'],\n & + ul,\n & + ol,\n & + h1,\n & + h2,\n & + h3,\n & + h4,\n & + h5,\n & + h6 {\n clear: both !important;\n }\n & .", " {\n margin-left: 0;\n margin-right: 0;\n }\n }\n\n .mediaSingleView-content-wrap[layout^='wrap-'] {\n max-width: 100%;\n // overwrite default Prosemirror setting making it clear: both\n clear: inherit;\n }\n\n .mediaSingleView-content-wrap[layout='wrap-left'] {\n float: left;\n }\n\n .mediaSingleView-content-wrap[layout='wrap-right'] {\n float: right;\n }\n\n .mediaSingleView-content-wrap[layout='wrap-right']\n + .mediaSingleView-content-wrap[layout='wrap-left'] {\n clear: both;\n }\n\n /* Larger margins for resize handlers when at depth 0 of the document */\n & > .mediaSingleView-content-wrap {\n .richMedia-resize-handle-right {\n margin-right: -", "px;\n }\n .richMedia-resize-handle-left {\n margin-left: -", "px;\n }\n }\n }\n\n .richMedia-resize-handle-right,\n .richMedia-resize-handle-left {\n display: flex;\n flex-direction: column;\n\n /* vertical align */\n justify-content: center;\n }\n\n .richMedia-resize-handle-right {\n align-items: flex-end;\n padding-right: ", ";\n margin-right: -", "px;\n }\n\n .richMedia-resize-handle-left {\n align-items: flex-start;\n padding-left: ", ";\n margin-left: -", "px;\n }\n\n .richMedia-resize-handle-right::after,\n .richMedia-resize-handle-left::after {\n content: ' ';\n display: flex;\n width: 3px;\n height: 64px;\n\n border-radius: 6px;\n }\n\n .", ":hover .richMedia-resize-handle-left::after,\n .", ":hover .richMedia-resize-handle-right::after {\n background: ", ";\n }\n\n .", " .richMedia-resize-handle-right::after,\n .", " .richMedia-resize-handle-left::after,\n .", " .richMedia-resize-handle-right:hover::after,\n .", " .richMedia-resize-handle-left:hover::after,\n .", ".is-resizing .richMedia-resize-handle-right::after,\n .", ".is-resizing .richMedia-resize-handle-left::after {\n background: ", ";\n }\n\n .__resizable_base__ {\n left: unset !important;\n width: auto !important;\n height: auto !important;\n }\n\n /* Danger when top level node for smart cards / inline links */\n .danger > div > div > .media-card-frame,\n .danger > span > a {\n background-color: ", ";\n box-shadow: 0px 0px 0px ", "px\n ", ";\n transition: background-color 0s, box-shadow 0s;\n }\n /* Danger when nested node or common */\n .danger {\n /* Media single */\n .", " .", "::after {\n border: 1px solid ", ";\n }\n /* Media single video player */\n .", " .", "::after {\n border: 1px solid ", ";\n }\n /* New file experience */\n .", " .", " {\n box-shadow: 0 0 0 1px\n ", " !important;\n }\n /* Media resize handlers */\n .richMedia-resize-handle-right::after,\n .richMedia-resize-handle-left::after {\n background: ", ";\n }\n\n /* Smart cards */\n div div .media-card-frame,\n .inlineCardView-content-wrap > span > a {\n background-color: ", "; /* R75 with 50% opactiy */\n transition: background-color 0s;\n }\n\n div div .media-card-frame::after {\n box-shadow: none;\n }\n }\n"])), _styles.mediaSingleSharedStyle, _styles.richMediaClassName, _styles.richMediaClassName, _styles.richMediaClassName, _editorSharedStyles.akEditorMediaResizeHandlerPaddingWide, _editorSharedStyles.akEditorMediaResizeHandlerPaddingWide, "var(--ds-space-150, 12px)", _editorSharedStyles.akEditorMediaResizeHandlerPadding, "var(--ds-space-150, 12px)", _editorSharedStyles.akEditorMediaResizeHandlerPadding, _styles.richMediaClassName, _styles.richMediaClassName, "var(--ds-border, ".concat(_colors.N60, ")"), _editorSharedStyles.akEditorSelectedNodeClassName, _editorSharedStyles.akEditorSelectedNodeClassName, _styles.richMediaClassName, _styles.richMediaClassName, _styles.richMediaClassName, _styles.richMediaClassName, "var(--ds-border-focused, ".concat(_colors.B200, ")"), "var(--ds-background-danger, ".concat(_editorSharedStyles.akEditorDeleteBackground, ")"), _editorSharedStyles.akEditorSelectedBorderBoldSize, "var(--ds-border-danger, ".concat(_editorSharedStyles.akEditorDeleteBorder, ")"), _styles.richMediaClassName, _mediaCard.fileCardImageViewSelector, "var(--ds-border-danger, ".concat(_editorSharedStyles.akEditorDeleteIconColor, ")"), _styles.richMediaClassName, _mediaCard.inlinePlayerClassName, "var(--ds-border-danger, ".concat(_editorSharedStyles.akEditorDeleteIconColor, ")"), _styles.richMediaClassName, _mediaCard.newFileExperienceClassName, "var(--ds-border-danger, ".concat(_editorSharedStyles.akEditorDeleteIconColor, ")"), "var(--ds-icon-danger, ".concat(_editorSharedStyles.akEditorDeleteIconColor, ")"), "var(--ds-blanket-danger, rgb(255, 189, 173, 0.5))");
16
16
 
17
17
  /* `left: unset` above is to work around Chrome bug where rendering a div with
18
18
  * that style applied inside a container that has a scroll, causes any svgs on
@@ -265,12 +265,15 @@ var generateMediaSingleFloatingToolbar = function generateMediaSingleFloatingToo
265
265
  type: 'custom',
266
266
  fallback: [],
267
267
  render: function render(editorView) {
268
+ var _widthPlugin$sharedSt2, _widthPlugin$sharedSt3;
268
269
  if (!editorView) {
269
270
  return null;
270
271
  }
271
272
  var state = editorView.state,
272
273
  dispatch = editorView.dispatch;
273
274
  var selectedMediaSingleNode = (0, _utils2.getSelectedMediaSingle)(state);
275
+ var contentWidth = (widthPlugin === null || widthPlugin === void 0 ? void 0 : (_widthPlugin$sharedSt2 = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt2 === void 0 ? void 0 : _widthPlugin$sharedSt2.lineLength) || _editorSharedStyles.akEditorDefaultLayoutWidth;
276
+ var containerWidth = (widthPlugin === null || widthPlugin === void 0 ? void 0 : (_widthPlugin$sharedSt3 = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt3 === void 0 ? void 0 : _widthPlugin$sharedSt3.width) || _editorSharedStyles.akEditorFullWidthLayoutWidth;
274
277
  if (!selectedMediaSingleNode) {
275
278
  return null;
276
279
  }
@@ -278,13 +281,25 @@ var generateMediaSingleFloatingToolbar = function generateMediaSingleFloatingToo
278
281
  if (!selectedMediaNode) {
279
282
  return null;
280
283
  }
281
- var singleMediaWidth = selectedMediaSingleNode.node.attrs.width;
284
+ var _selectedMediaSingleN = selectedMediaSingleNode.node.attrs,
285
+ singleMediaWidth = _selectedMediaSingleN.width,
286
+ widthType = _selectedMediaSingleN.widthType,
287
+ layout = _selectedMediaSingleN.layout;
282
288
  var _selectedMediaNode$at = selectedMediaNode.attrs,
283
289
  mediaWidth = _selectedMediaNode$at.width,
284
290
  mediaHeight = _selectedMediaNode$at.height;
291
+ var pixelWidth = (0, _mediaSingle.calcMediaSinglePixelWidth)({
292
+ width: singleMediaWidth,
293
+ widthType: widthType,
294
+ origWidth: mediaWidth || _mediaSingle.DEFAULT_IMAGE_WIDTH,
295
+ layout: layout,
296
+ contentWidth: contentWidth,
297
+ containerWidth: containerWidth,
298
+ gutterOffset: _mediaSingle.MEDIA_SINGLE_GUTTER_SIZE
299
+ });
285
300
  return /*#__PURE__*/_react.default.createElement(_PixelEntry.PixelEntry, {
286
301
  intl: intl,
287
- width: singleMediaWidth,
302
+ width: pluginState.isResizing ? pluginState.resizingWidth : pixelWidth,
288
303
  mediaWidth: mediaWidth || _mediaSingle.DEFAULT_IMAGE_WIDTH,
289
304
  mediaHeight: mediaHeight || _mediaSingle.DEFAULT_IMAGE_HEIGHT,
290
305
  validate: function validate(value) {
@@ -304,11 +319,9 @@ var generateMediaSingleFloatingToolbar = function generateMediaSingleFloatingToo
304
319
  });
305
320
  }
306
321
  });
307
- if (!pluginState.isResizing) {
308
- toolbarButtons.push({
309
- type: 'separator'
310
- });
311
- }
322
+ toolbarButtons.push({
323
+ type: 'separator'
324
+ });
312
325
  }
313
326
  if (allowLinking && (0, _linking.shouldShowMediaLinkToolbar)(state)) {
314
327
  toolbarButtons.push({
@@ -406,7 +419,7 @@ var floatingToolbar = function floatingToolbar(state, intl) {
406
419
  var mediaLinkingState = (0, _linking2.getMediaLinkingState)(state);
407
420
  var _ref3 = (_pluginInjectionApi$d9 = pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.dependencies.decorations.actions) !== null && _pluginInjectionApi$d9 !== void 0 ? _pluginInjectionApi$d9 : {},
408
421
  hoverDecoration = _ref3.hoverDecoration;
409
- if (!mediaPluginState || mediaPluginState.isResizing) {
422
+ if (!mediaPluginState) {
410
423
  return;
411
424
  }
412
425
  var nodeType = allowMediaInline ? [mediaInline, mediaSingle, media] : [mediaSingle];
@@ -30,6 +30,8 @@ var _styles = require("@atlaskit/editor-common/styles");
30
30
  var _mediaSingle = require("@atlaskit/editor-common/media-single");
31
31
  var _guideline = require("@atlaskit/editor-common/guideline");
32
32
  var _memoizeOne = _interopRequireDefault(require("memoize-one"));
33
+ var _throttle = _interopRequireDefault(require("lodash/throttle"));
34
+ var _main = require("../../pm-plugins/main");
33
35
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
34
36
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** @jsx jsx */
35
37
  var resizerNextTestId = 'mediaSingle.resizerNext.testid';
@@ -77,12 +79,13 @@ var ResizableMediaSingleNext = /*#__PURE__*/function (_React$Component) {
77
79
  layout = _this$props2.layout,
78
80
  state = _this$props2.view.state,
79
81
  containerWidth = _this$props2.containerWidth,
80
- lineLength = _this$props2.lineLength;
82
+ lineLength = _this$props2.lineLength,
83
+ fullWidthMode = _this$props2.fullWidthMode;
81
84
  var newPct = (0, _ui.calcPctFromPx)(newWidth, _this.props.lineLength) * 100;
82
85
  _this.setState({
83
86
  resizedPctWidth: newPct
84
87
  });
85
- var newLayout = (0, _utils.hasParentNodeOfType)(state.schema.nodes.table)(state.selection) ? layout : _this.calcUnwrappedLayout(newWidth, containerWidth, lineLength);
88
+ var newLayout = (0, _utils.hasParentNodeOfType)(state.schema.nodes.table)(state.selection) ? layout : _this.calcUnwrappedLayout(newWidth, containerWidth, lineLength, fullWidthMode);
86
89
  if (newPct <= 100) {
87
90
  if (_this.wrappedLayout && (stop ? newPct !== 100 : true)) {
88
91
  newLayout = layout;
@@ -98,7 +101,13 @@ var ResizableMediaSingleNext = /*#__PURE__*/function (_React$Component) {
98
101
  };
99
102
  }
100
103
  });
101
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "calcUnwrappedLayout", function (width, containerWidth, contentWidth) {
104
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "calcUnwrappedLayout", function (width, containerWidth, contentWidth, fullWidthMode) {
105
+ if (fullWidthMode) {
106
+ if (width < contentWidth) {
107
+ return 'center';
108
+ }
109
+ return 'full-width';
110
+ }
102
111
  if (width <= contentWidth) {
103
112
  return 'center';
104
113
  }
@@ -137,7 +146,15 @@ var ResizableMediaSingleNext = /*#__PURE__*/function (_React$Component) {
137
146
  state = _this$props$view.state,
138
147
  dispatch = _this$props$view.dispatch;
139
148
  var tr = state.tr;
140
- tr.setMeta('mediaSinglePlugin.isResizing', isResizing);
149
+ tr.setMeta(_main.MEDIA_PLUGIN_IS_RESIZING_KEY, isResizing);
150
+ return dispatch(tr);
151
+ });
152
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateSizeInPluginState", function (width) {
153
+ var _this$props$view2 = _this.props.view,
154
+ state = _this$props$view2.state,
155
+ dispatch = _this$props$view2.dispatch;
156
+ var tr = state.tr;
157
+ tr.setMeta(_main.MEDIA_PLUGIN_RESIZING_WIDTH_KEY, width);
141
158
  return dispatch(tr);
142
159
  });
143
160
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "calcMaxWidth", (0, _memoizeOne.default)(function (contentWidth, containerWidth, fullWidthMode) {
@@ -191,11 +208,12 @@ var ResizableMediaSingleNext = /*#__PURE__*/function (_React$Component) {
191
208
  });
192
209
  _this.selectCurrentMediaNode();
193
210
  _this.setIsResizing(true);
211
+ _this.updateSizeInPluginState(_this.state.size.width);
194
212
  // re-calucate guidelines
195
213
  _this.guidelines = _this.getAllGuidelines();
196
214
  return 0;
197
215
  });
198
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleResize", function (size, delta) {
216
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleResize", (0, _throttle.default)(function (size, delta) {
199
217
  var _this$props4 = _this.props,
200
218
  originalWidth = _this$props4.width,
201
219
  originalHeight = _this$props4.height,
@@ -215,10 +233,11 @@ var ResizableMediaSingleNext = /*#__PURE__*/function (_React$Component) {
215
233
  },
216
234
  snaps: guidelineSnaps.snaps
217
235
  });
236
+ _this.updateSizeInPluginState(width);
218
237
  if (calculatedWidthWithLayout.layout !== layout) {
219
238
  updateSize(width, calculatedWidthWithLayout.layout);
220
239
  }
221
- });
240
+ }, _mediaSingle.MEDIA_SINGLE_RESIZE_THROTTLE_TIME));
222
241
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleResizeStop", function (size, delta) {
223
242
  var _this$props5 = _this.props,
224
243
  originalWidth = _this$props5.width,
@@ -278,6 +297,7 @@ var ResizableMediaSingleNext = /*#__PURE__*/function (_React$Component) {
278
297
  }, {
279
298
  key: "componentDidUpdate",
280
299
  value: function componentDidUpdate(prevProps) {
300
+ var _this2 = this;
281
301
  var offsetLeft = (0, _mediaSingle.calculateOffsetLeft)(this.insideInlineLike, this.insideLayout, this.props.view.dom, this.wrapper);
282
302
  if (offsetLeft !== this.state.offsetLeft && offsetLeft >= 0) {
283
303
  this.setState({
@@ -303,6 +323,18 @@ var ResizableMediaSingleNext = /*#__PURE__*/function (_React$Component) {
303
323
  }
304
324
  });
305
325
  }
326
+ if (this.props.layout === 'full-width' && !this.isNestedNode() && prevProps.containerWidth !== this.props.containerWidth) {
327
+ // To achieve edge-to-edge for full-width, we need to update its width according to containerWidth
328
+ // Update state to allow resizer to get most up-to-date width to avoid jumping when start resizing
329
+ this.setState(function (prevState) {
330
+ return {
331
+ size: {
332
+ width: (0, _mediaSingle.calcMediaSingleMaxWidth)(_this2.props.containerWidth),
333
+ height: prevState.size.height
334
+ }
335
+ };
336
+ });
337
+ }
306
338
  return true;
307
339
  }
308
340
 
@@ -462,7 +494,7 @@ var ResizableMediaSingleNext = /*#__PURE__*/function (_React$Component) {
462
494
  }, {
463
495
  key: "render",
464
496
  value: function render() {
465
- var _this2 = this;
497
+ var _this3 = this;
466
498
  var _this$props8 = this.props,
467
499
  origWidth = _this$props8.width,
468
500
  layout = _this$props8.layout,
@@ -479,7 +511,7 @@ var ResizableMediaSingleNext = /*#__PURE__*/function (_React$Component) {
479
511
  _ui.handleSides.forEach(function (side) {
480
512
  var oppositeSide = side === 'left' ? 'right' : 'left';
481
513
  enable[side] = _utils2.nonWrappedLayouts.concat("wrap-".concat(oppositeSide)).concat("align-".concat(_ui.imageAlignmentMap[oppositeSide])).indexOf(layout) > -1;
482
- if (side === 'left' && _this2.insideInlineLike) {
514
+ if (side === 'left' && _this3.insideInlineLike) {
483
515
  enable[side] = false;
484
516
  }
485
517
  });