@atlaskit/editor-plugin-media 0.4.0 → 0.4.2

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 (41) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/plugin.js +19 -21
  3. package/dist/cjs/pm-plugins/keymap.js +1 -96
  4. package/dist/cjs/pm-plugins/main.js +14 -10
  5. package/dist/cjs/toolbar/commands.js +1 -1
  6. package/dist/cjs/toolbar/index.js +1 -1
  7. package/dist/cjs/utils/{is-image.js → is-type.js} +4 -1
  8. package/dist/cjs/utils/media-inline.js +27 -0
  9. package/dist/cjs/utils/media-single.js +3 -3
  10. package/dist/es2019/plugin.js +2 -5
  11. package/dist/es2019/pm-plugins/keymap.js +2 -87
  12. package/dist/es2019/pm-plugins/main.js +18 -14
  13. package/dist/es2019/toolbar/commands.js +1 -1
  14. package/dist/es2019/toolbar/index.js +1 -1
  15. package/dist/es2019/utils/{is-image.js → is-type.js} +3 -0
  16. package/dist/es2019/utils/media-inline.js +21 -0
  17. package/dist/es2019/utils/media-single.js +1 -1
  18. package/dist/esm/plugin.js +19 -21
  19. package/dist/esm/pm-plugins/keymap.js +2 -97
  20. package/dist/esm/pm-plugins/main.js +18 -14
  21. package/dist/esm/toolbar/commands.js +1 -1
  22. package/dist/esm/toolbar/index.js +1 -1
  23. package/dist/esm/utils/{is-image.js → is-type.js} +3 -0
  24. package/dist/esm/utils/media-inline.js +21 -0
  25. package/dist/esm/utils/media-single.js +1 -1
  26. package/dist/types/pm-plugins/keymap.d.ts +1 -2
  27. package/dist/types/pm-plugins/types.d.ts +0 -1
  28. package/dist/types/toolbar/commands.d.ts +1 -2
  29. package/dist/types/utils/{is-image.d.ts → is-type.d.ts} +1 -0
  30. package/dist/types/utils/media-inline.d.ts +4 -0
  31. package/dist/types-ts4.5/pm-plugins/keymap.d.ts +1 -2
  32. package/dist/types-ts4.5/pm-plugins/types.d.ts +0 -1
  33. package/dist/types-ts4.5/toolbar/commands.d.ts +1 -2
  34. package/dist/types-ts4.5/utils/{is-image.d.ts → is-type.d.ts} +1 -0
  35. package/dist/types-ts4.5/utils/media-inline.d.ts +4 -0
  36. package/package.json +2 -2
  37. package/dist/cjs/pm-plugins/mediaResizeAnnouncerMess.js +0 -34
  38. package/dist/es2019/pm-plugins/mediaResizeAnnouncerMess.js +0 -28
  39. package/dist/esm/pm-plugins/mediaResizeAnnouncerMess.js +0 -28
  40. package/dist/types/pm-plugins/mediaResizeAnnouncerMess.d.ts +0 -27
  41. package/dist/types-ts4.5/pm-plugins/mediaResizeAnnouncerMess.d.ts +0 -27
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @atlaskit/editor-plugin-media
2
2
 
3
+ ## 0.4.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#43436](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/43436) [`6bf14e25965`](https://bitbucket.org/atlassian/atlassian-frontend/commits/6bf14e25965) - Revert "Resize media for the keyboard users"
8
+
9
+ ## 0.4.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [#43145](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/43145) [`999af31b6ad`](https://bitbucket.org/atlassian/atlassian-frontend/commits/999af31b6ad) - [ux] [ED-20776] Change mediaInline node insertion logic behind 'platform.editor.media.inline-image.base-support' feature flag. With the flag on, Adding an image to a non-empty paragraph and list node inserts an media inline node, instead of media single node.
14
+ - Updated dependencies
15
+
3
16
  ## 0.4.0
4
17
 
5
18
  ### Minor Changes
@@ -58,7 +58,6 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref2) {
58
58
  options = _ref2$config === void 0 ? {} : _ref2$config,
59
59
  api = _ref2.api;
60
60
  var featureFlags = (api === null || api === void 0 || (_api$featureFlags = api.featureFlags) === null || _api$featureFlags === void 0 ? void 0 : _api$featureFlags.sharedState.currentState()) || {};
61
- var apiWidth = api === null || api === void 0 ? void 0 : api.width;
62
61
  return {
63
62
  name: 'media',
64
63
  getSharedState: function getSharedState(editorState) {
@@ -146,17 +145,16 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref2) {
146
145
  }
147
146
  }, {
148
147
  name: 'mediaKeymap',
149
- plugin: function plugin(_ref5) {
148
+ plugin: function plugin() {
150
149
  var _api$analytics2;
151
- var getIntl = _ref5.getIntl;
152
- return (0, _keymap2.default)(options, api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions, api === null || api === void 0 ? void 0 : api.selection.actions, apiWidth, getIntl);
150
+ return (0, _keymap2.default)(options, api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions, api === null || api === void 0 ? void 0 : api.selection.actions);
153
151
  }
154
152
  }];
155
153
  if (options && options.allowMediaSingle) {
156
154
  pmPlugins.push({
157
155
  name: 'mediaSingleKeymap',
158
- plugin: function plugin(_ref6) {
159
- var schema = _ref6.schema;
156
+ plugin: function plugin(_ref5) {
157
+ var schema = _ref5.schema;
160
158
  return (0, _keymapMediaSingle.default)(schema);
161
159
  }
162
160
  });
@@ -168,9 +166,9 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref2) {
168
166
  });
169
167
  pmPlugins.push({
170
168
  name: 'mediaAltTextKeymap',
171
- plugin: function plugin(_ref7) {
169
+ plugin: function plugin(_ref6) {
172
170
  var _api$analytics3;
173
- var schema = _ref7.schema;
171
+ var schema = _ref6.schema;
174
172
  return (0, _keymap.default)(schema, api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions);
175
173
  }
176
174
  });
@@ -178,15 +176,15 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref2) {
178
176
  if (options && options.allowLinking) {
179
177
  pmPlugins.push({
180
178
  name: 'mediaLinking',
181
- plugin: function plugin(_ref8) {
182
- var dispatch = _ref8.dispatch;
179
+ plugin: function plugin(_ref7) {
180
+ var dispatch = _ref7.dispatch;
183
181
  return (0, _linking.default)(dispatch);
184
182
  }
185
183
  });
186
184
  pmPlugins.push({
187
185
  name: 'mediaLinkingKeymap',
188
- plugin: function plugin(_ref9) {
189
- var schema = _ref9.schema;
186
+ plugin: function plugin(_ref8) {
187
+ var schema = _ref8.schema;
190
188
  return (0, _keymap3.default)(schema);
191
189
  }
192
190
  });
@@ -222,19 +220,19 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref2) {
222
220
  });
223
221
  return pmPlugins;
224
222
  },
225
- contentComponent: function contentComponent(_ref10) {
226
- var editorView = _ref10.editorView,
227
- appearance = _ref10.appearance;
223
+ contentComponent: function contentComponent(_ref9) {
224
+ var editorView = _ref9.editorView,
225
+ appearance = _ref9.appearance;
228
226
  return /*#__PURE__*/_react.default.createElement(MediaPickerFunctionalComponent, {
229
227
  editorDomElement: editorView.dom,
230
228
  appearance: appearance,
231
229
  api: api
232
230
  });
233
231
  },
234
- secondaryToolbarComponent: function secondaryToolbarComponent(_ref11) {
235
- var editorView = _ref11.editorView,
236
- eventDispatcher = _ref11.eventDispatcher,
237
- disabled = _ref11.disabled;
232
+ secondaryToolbarComponent: function secondaryToolbarComponent(_ref10) {
233
+ var editorView = _ref10.editorView,
234
+ eventDispatcher = _ref10.eventDispatcher,
235
+ disabled = _ref10.disabled;
238
236
  return /*#__PURE__*/_react.default.createElement(_ToolbarMedia.default, {
239
237
  isDisabled: disabled,
240
238
  isReducedSpacing: true,
@@ -242,8 +240,8 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref2) {
242
240
  });
243
241
  },
244
242
  pluginsOptions: {
245
- quickInsert: function quickInsert(_ref12) {
246
- var formatMessage = _ref12.formatMessage;
243
+ quickInsert: function quickInsert(_ref11) {
244
+ var formatMessage = _ref11.formatMessage;
247
245
  return [{
248
246
  id: 'media',
249
247
  title: formatMessage(_messages.toolbarInsertBlockMessages.mediaFiles),
@@ -6,17 +6,12 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  exports.keymapPlugin = keymapPlugin;
8
8
  var _keymaps = require("@atlaskit/editor-common/keymaps");
9
- var _mediaSingle = require("@atlaskit/editor-common/media-single");
10
9
  var _selection = require("@atlaskit/editor-common/selection");
11
10
  var _keymap = require("@atlaskit/editor-prosemirror/keymap");
12
11
  var _state = require("@atlaskit/editor-prosemirror/state");
13
- var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
14
12
  var _captions = require("../commands/captions");
15
13
  var _pluginKey = require("../pm-plugins/plugin-key");
16
- var _commands = require("../toolbar/commands");
17
- var _utils = require("../toolbar/utils");
18
- var _mediaResizeAnnouncerMess = require("./mediaResizeAnnouncerMess");
19
- function keymapPlugin(options, editorAnalyticsAPI, editorSelectionAPI, widthPlugin, getIntl) {
14
+ function keymapPlugin(options, editorAnalyticsAPI, editorSelectionAPI) {
20
15
  var list = {};
21
16
  (0, _keymaps.bindKeymapWithCommand)(_keymaps.undo.common, ignoreLinksInSteps, list);
22
17
  (0, _keymaps.bindKeymapWithCommand)(_keymaps.enter.common, splitMediaGroup, list);
@@ -27,10 +22,6 @@ function keymapPlugin(options, editorAnalyticsAPI, editorSelectionAPI, widthPlug
27
22
  (0, _keymaps.bindKeymapWithCommand)(_keymaps.moveRight.common, arrowRightFromMediaSingle(editorSelectionAPI), list);
28
23
  }
29
24
  (0, _keymaps.bindKeymapWithCommand)(_keymaps.insertNewLine.common, splitMediaGroup, list);
30
- (0, _keymaps.bindKeymapWithCommand)(_keymaps.increaseMediaSize.common, handleMediaIncrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
31
- (0, _keymaps.bindKeymapWithCommand)(_keymaps.decreaseMediaSize.common, handleMediaDecrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
32
- (0, _keymaps.bindKeymapWithCommand)(_keymaps.quickIncreaseMediaSize.common, handleMediaQuickIncrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
33
- (0, _keymaps.bindKeymapWithCommand)(_keymaps.quickDecreaseMediaSize.common, handleMediaQuickDecrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
34
25
  return (0, _keymap.keymap)(list);
35
26
  }
36
27
  var ignoreLinksInSteps = function ignoreLinksInSteps(state) {
@@ -42,92 +33,6 @@ var splitMediaGroup = function splitMediaGroup(state) {
42
33
  var mediaPluginState = _pluginKey.stateKey.getState(state);
43
34
  return mediaPluginState.splitMediaGroup();
44
35
  };
45
- var createAnnouncer = function createAnnouncer(action, mediaWidth, changeAmount, validation, getIntl) {
46
- var announcerContainer = document.getElementById('media-announcer') || document.createElement('div');
47
- var intl = getIntl();
48
- if (!announcerContainer.id) {
49
- announcerContainer.id = 'media-announcer';
50
- announcerContainer.setAttribute('role', 'status');
51
- announcerContainer.setAttribute('aria-live', 'polite');
52
- announcerContainer.setAttribute('aria-atomic', 'true');
53
- var style = announcerContainer.style;
54
- style.position = 'absolute';
55
- style.width = '1px';
56
- style.height = '1px';
57
- style.marginTop = '-1px';
58
- style.opacity = '0';
59
- style.overflow = 'hidden';
60
- document.body.appendChild(announcerContainer);
61
- } else {
62
- var newMediaWidth = mediaWidth + changeAmount;
63
- if (validation === 'greater-than-max') {
64
- announcerContainer.textContent = intl.formatMessage(_mediaResizeAnnouncerMess.mediaResizeAnnouncerMess.MediaWidthIsMax);
65
- } else if (validation === 'less-than-min') {
66
- announcerContainer.textContent = intl.formatMessage(_mediaResizeAnnouncerMess.mediaResizeAnnouncerMess.MediaWidthIsMin);
67
- } else {
68
- announcerContainer.textContent = intl.formatMessage(_mediaResizeAnnouncerMess.mediaResizeAnnouncerMess.DefaultMediaWidth, {
69
- action: action,
70
- newMediaWidth: newMediaWidth
71
- });
72
- }
73
- }
74
- };
75
- var handleMediaSizeChange = function handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, changeAmount, action, getIntl) {
76
- return function (state, dispatch) {
77
- var _selectedNode$node, _selectedNode$node2, _widthPlugin$sharedSt;
78
- var selectedNode = (0, _utils.getSelectedMediaSingle)(state);
79
- var layout = selectedNode === null || selectedNode === void 0 || (_selectedNode$node = selectedNode.node) === null || _selectedNode$node === void 0 || (_selectedNode$node = _selectedNode$node.attrs) === null || _selectedNode$node === void 0 ? void 0 : _selectedNode$node.layout;
80
- var mediaWidth = selectedNode === null || selectedNode === void 0 || (_selectedNode$node2 = selectedNode.node) === null || _selectedNode$node2 === void 0 || (_selectedNode$node2 = _selectedNode$node2.attrs) === null || _selectedNode$node2 === void 0 ? void 0 : _selectedNode$node2.width;
81
- var contentWidth =
82
- // @ts-ignore readonly sharedState
83
- (widthPlugin === null || widthPlugin === void 0 || (_widthPlugin$sharedSt = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt === void 0 ? void 0 : _widthPlugin$sharedSt.lineLength) || _editorSharedStyles.akEditorDefaultLayoutWidth;
84
- var minWidth = _mediaSingle.MEDIA_SINGLE_DEFAULT_MIN_PIXEL_WIDTH;
85
- var maxWidth;
86
- var validation = 'valid';
87
- var newWidth = mediaWidth + changeAmount;
88
- var intl = getIntl();
89
- if (options !== null && options !== void 0 && options.fullWidthEnabled) {
90
- var _widthPlugin$sharedSt2;
91
- // @ts-ignore readonly sharedState
92
- maxWidth = widthPlugin === null || widthPlugin === void 0 || (_widthPlugin$sharedSt2 = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt2 === void 0 ? void 0 : _widthPlugin$sharedSt2.lineLength;
93
- } else {
94
- var _widthPlugin$sharedSt3;
95
- maxWidth = (0, _mediaSingle.calcMediaSingleMaxWidth)( // @ts-ignore readonly sharedState
96
- widthPlugin === null || widthPlugin === void 0 || (_widthPlugin$sharedSt3 = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt3 === void 0 ? void 0 : _widthPlugin$sharedSt3.width);
97
- }
98
- if (newWidth > maxWidth) {
99
- newWidth = maxWidth;
100
- validation = 'greater-than-max';
101
- } else if (newWidth < minWidth) {
102
- newWidth = minWidth;
103
- validation = 'less-than-min';
104
- } else {
105
- newWidth;
106
- validation = 'valid';
107
- }
108
- if (action === 'increased') {
109
- action = intl.formatMessage(_mediaResizeAnnouncerMess.mediaResizeAnnouncerMess.IncreasedAction);
110
- } else if (action === 'decreased') {
111
- action = intl.formatMessage(_mediaResizeAnnouncerMess.mediaResizeAnnouncerMess.DecreasedAction);
112
- }
113
- var newLayout = (0, _utils.calcNewLayout)(newWidth, layout, contentWidth, options === null || options === void 0 ? void 0 : options.fullWidthEnabled);
114
- (0, _commands.updateMediaSingleWidth)(editorAnalyticsAPI)(newWidth, validation, 'keyboard', newLayout)(state, dispatch);
115
- createAnnouncer(action, mediaWidth, changeAmount, validation, getIntl);
116
- return true;
117
- };
118
- };
119
- var handleMediaIncrease = function handleMediaIncrease(editorAnalyticsAPI, widthPlugin, options, getIntl) {
120
- return handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, 1, 'increased', getIntl);
121
- };
122
- var handleMediaDecrease = function handleMediaDecrease(editorAnalyticsAPI, widthPlugin, options, getIntl) {
123
- return handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, -1, 'decreased', getIntl);
124
- };
125
- var handleMediaQuickIncrease = function handleMediaQuickIncrease(editorAnalyticsAPI, widthPlugin, options, getIntl) {
126
- return handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, 10, 'increased', getIntl);
127
- };
128
- var handleMediaQuickDecrease = function handleMediaQuickDecrease(editorAnalyticsAPI, widthPlugin, options, getIntl) {
129
- return handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, -10, 'decreased', getIntl);
130
- };
131
36
  var insertAndSelectCaption = function insertAndSelectCaption(editorAnalyticsAPI) {
132
37
  return function (state, dispatch) {
133
38
  var selection = state.selection,
@@ -38,6 +38,7 @@ var _pickerFacade = _interopRequireDefault(require("../picker-facade"));
38
38
  var _DropPlaceholder = _interopRequireDefault(require("../ui/Media/DropPlaceholder"));
39
39
  var _mediaCommon2 = require("../utils/media-common");
40
40
  var _mediaFiles = require("../utils/media-files");
41
+ var _mediaInline = require("../utils/media-inline");
41
42
  var _mediaSingle2 = require("../utils/media-single");
42
43
  var _mediaTaskManager = require("./mediaTaskManager");
43
44
  var _pluginKey = require("./plugin-key");
@@ -224,7 +225,7 @@ var MediaPluginStateImplementation = exports.MediaPluginStateImplementation = /*
224
225
  * called when we insert a new file via the picker (connected via pickerfacade)
225
226
  */
226
227
  (0, _defineProperty2.default)(this, "insertFile", function (mediaState, onMediaStateChanged, pickerType) {
227
- var _this$pluginInjection, _mediaState$collectio, _this$mediaOptions2;
228
+ var _this$pluginInjection, _mediaState$collectio, _this$mediaOptions2, _this$pluginInjection2;
228
229
  var state = _this.view.state;
229
230
  var editorAnalyticsAPI = (_this$pluginInjection = _this.pluginInjectionApi) === null || _this$pluginInjection === void 0 || (_this$pluginInjection = _this$pluginInjection.analytics) === null || _this$pluginInjection === void 0 ? void 0 : _this$pluginInjection.actions;
230
231
  var mediaStateWithContext = _objectSpread(_objectSpread({}, mediaState), {}, {
@@ -241,15 +242,18 @@ var MediaPluginStateImplementation = exports.MediaPluginStateImplementation = /*
241
242
  allUploadsFinished: false
242
243
  });
243
244
  }
244
- if ((0, _mediaSingle2.isMediaSingle)(state.schema, mediaStateWithContext.fileMimeType)) {
245
- var _this$pluginInjection2;
246
- // read width state right before inserting to get up-to-date and define values
247
- var widthPluginState = (_this$pluginInjection2 = _this.pluginInjectionApi) === null || _this$pluginInjection2 === void 0 ? void 0 : _this$pluginInjection2.width.sharedState.currentState();
248
- (0, _mediaSingle2.insertMediaSingleNode)(_this.view, mediaStateWithContext, _this.getInputMethod(pickerType), collection, _this.mediaOptions && _this.mediaOptions.alignLeftOnInsert, _this.newInsertionBehaviour, widthPluginState, editorAnalyticsAPI);
249
- } else if ((0, _mediaCommon.getMediaFeatureFlag)('mediaInline', (_this$mediaOptions2 = _this.mediaOptions) === null || _this$mediaOptions2 === void 0 ? void 0 : _this$mediaOptions2.featureFlags) && !(0, _utils.isInEmptyLine)(state) && (!(0, _mediaCommon2.isInsidePotentialEmptyParagraph)(state) || (0, _utils.isInListItem)(state)) && (0, _mediaFiles.canInsertMediaInline)(state)) {
250
- (0, _mediaFiles.insertMediaInlineNode)(editorAnalyticsAPI)(_this.view, mediaStateWithContext, collection, _this.getInputMethod(pickerType));
251
- } else {
252
- (0, _mediaFiles.insertMediaGroupNode)(editorAnalyticsAPI)(_this.view, [mediaStateWithContext], collection, _this.getInputMethod(pickerType));
245
+ switch ((0, _mediaInline.getMediaNodeInsertionType)(state, (_this$mediaOptions2 = _this.mediaOptions) === null || _this$mediaOptions2 === void 0 ? void 0 : _this$mediaOptions2.featureFlags, mediaStateWithContext.fileMimeType)) {
246
+ case 'inline':
247
+ (0, _mediaFiles.insertMediaInlineNode)(editorAnalyticsAPI)(_this.view, mediaStateWithContext, collection, _this.getInputMethod(pickerType));
248
+ break;
249
+ case 'block':
250
+ // read width state right before inserting to get up-to-date and define values
251
+ var widthPluginState = (_this$pluginInjection2 = _this.pluginInjectionApi) === null || _this$pluginInjection2 === void 0 ? void 0 : _this$pluginInjection2.width.sharedState.currentState();
252
+ (0, _mediaSingle2.insertMediaSingleNode)(_this.view, mediaStateWithContext, _this.getInputMethod(pickerType), collection, _this.mediaOptions && _this.mediaOptions.alignLeftOnInsert, _this.newInsertionBehaviour, widthPluginState, editorAnalyticsAPI);
253
+ break;
254
+ case 'group':
255
+ (0, _mediaFiles.insertMediaGroupNode)(editorAnalyticsAPI)(_this.view, [mediaStateWithContext], collection, _this.getInputMethod(pickerType));
256
+ break;
253
257
  }
254
258
 
255
259
  // do events when media state changes
@@ -203,7 +203,7 @@ var setBorderMark = exports.setBorderMark = function setBorderMark(editorAnalyti
203
203
  };
204
204
  };
205
205
  var updateMediaSingleWidth = exports.updateMediaSingleWidth = function updateMediaSingleWidth(editorAnalyticsAPI) {
206
- return function (width, validation, input, layout) {
206
+ return function (width, validation, layout) {
207
207
  return function (state, dispatch) {
208
208
  var selectedMediaSingleNode = (0, _utils2.getSelectedMediaSingle)(state);
209
209
  if (!selectedMediaSingleNode) {
@@ -322,7 +322,7 @@ var generateMediaSingleFloatingToolbar = function generateMediaSingleFloatingToo
322
322
  var width = _ref2.width,
323
323
  validation = _ref2.validation;
324
324
  var newLayout = (0, _utils2.calcNewLayout)(width, layout, contentWidth, options.fullWidthEnabled, isNested);
325
- (0, _commands.updateMediaSingleWidth)(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a4 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a4 === void 0 ? void 0 : _pluginInjectionApi$a4.actions)(width, validation, 'floatingToolBar', newLayout)(state, dispatch);
325
+ (0, _commands.updateMediaSingleWidth)(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a4 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a4 === void 0 ? void 0 : _pluginInjectionApi$a4.actions)(width, validation, newLayout)(state, dispatch);
326
326
  },
327
327
  onMigrate: function onMigrate() {
328
328
  var tr = state.tr.setNodeMarkup(selectedMediaSingleNode.pos, undefined, _objectSpread(_objectSpread({}, selectedMediaSingleNode.node.attrs), {}, {
@@ -3,7 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.isImage = void 0;
6
+ exports.isVideo = exports.isImage = void 0;
7
7
  var isImage = exports.isImage = function isImage(fileType) {
8
8
  return !!fileType && (fileType.indexOf('image/') > -1 || fileType.indexOf('video/') > -1);
9
+ };
10
+ var isVideo = exports.isVideo = function isVideo(fileType) {
11
+ return !!fileType && fileType.includes('video/');
9
12
  };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getMediaNodeInsertionType = void 0;
7
+ var _utils = require("@atlaskit/editor-common/utils");
8
+ var _mediaCommon = require("@atlaskit/media-common");
9
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
10
+ var _mediaFiles = require("../utils/media-files");
11
+ var _mediaSingle = require("../utils/media-single");
12
+ var _isType = require("./is-type");
13
+ var _mediaCommon2 = require("./media-common");
14
+ var getMediaNodeInsertionType = exports.getMediaNodeInsertionType = function getMediaNodeInsertionType(state, mediaFeatureFlags, fileMimeType) {
15
+ var canInsertInlineNode = (0, _mediaCommon.getMediaFeatureFlag)('mediaInline', mediaFeatureFlags) && !(0, _utils.isInEmptyLine)(state) && (!(0, _mediaCommon2.isInsidePotentialEmptyParagraph)(state) || (0, _utils.isInListItem)(state)) && (0, _mediaFiles.canInsertMediaInline)(state);
16
+ if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.media.inline-image.base-support')) {
17
+ if (canInsertInlineNode && !(0, _isType.isVideo)(fileMimeType)) {
18
+ return 'inline';
19
+ }
20
+ }
21
+ if ((0, _mediaSingle.isMediaSingle)(state.schema, fileMimeType)) {
22
+ return 'block';
23
+ } else if (canInsertInlineNode) {
24
+ return 'inline';
25
+ }
26
+ return 'group';
27
+ };
@@ -18,7 +18,7 @@ var _model = require("@atlaskit/editor-prosemirror/model");
18
18
  var _utils2 = require("@atlaskit/editor-prosemirror/utils");
19
19
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
20
20
  var _mediaCommon = require("../utils/media-common");
21
- var _isImage = require("./is-image");
21
+ var _isType = require("./is-type");
22
22
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
23
23
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24
24
  var getInsertMediaAnalytics = function getInsertMediaAnalytics(inputMethod, fileExtension) {
@@ -62,7 +62,7 @@ function insertNodesWithOptionalParagraph(nodes) {
62
62
  };
63
63
  }
64
64
  var isMediaSingle = exports.isMediaSingle = function isMediaSingle(schema, fileMimeType) {
65
- return !!schema.nodes.mediaSingle && (0, _isImage.isImage)(fileMimeType);
65
+ return !!schema.nodes.mediaSingle && (0, _isType.isImage)(fileMimeType);
66
66
  };
67
67
  var insertMediaAsMediaSingle = exports.insertMediaAsMediaSingle = function insertMediaAsMediaSingle(view, node, inputMethod, editorAnalyticsAPI) {
68
68
  var state = view.state,
@@ -75,7 +75,7 @@ var insertMediaAsMediaSingle = exports.insertMediaAsMediaSingle = function inser
75
75
  }
76
76
 
77
77
  // if not an image type media node
78
- if (node.type !== media || !(0, _isImage.isImage)(node.attrs.__fileMimeType) && node.attrs.type !== 'external') {
78
+ if (node.type !== media || !(0, _isType.isImage)(node.attrs.__fileMimeType) && node.attrs.type !== 'external') {
79
79
  return false;
80
80
  }
81
81
  var mediaSingleNode = mediaSingle.create({}, node);
@@ -49,7 +49,6 @@ export const mediaPlugin = ({
49
49
  }) => {
50
50
  var _api$featureFlags;
51
51
  const featureFlags = (api === null || api === void 0 ? void 0 : (_api$featureFlags = api.featureFlags) === null || _api$featureFlags === void 0 ? void 0 : _api$featureFlags.sharedState.currentState()) || {};
52
- const apiWidth = api === null || api === void 0 ? void 0 : api.width;
53
52
  return {
54
53
  name: 'media',
55
54
  getSharedState(editorState) {
@@ -137,11 +136,9 @@ export const mediaPlugin = ({
137
136
  }
138
137
  }, {
139
138
  name: 'mediaKeymap',
140
- plugin: ({
141
- getIntl
142
- }) => {
139
+ plugin: () => {
143
140
  var _api$analytics2;
144
- return keymapPlugin(options, api === null || api === void 0 ? void 0 : (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions, api === null || api === void 0 ? void 0 : api.selection.actions, apiWidth, getIntl);
141
+ return keymapPlugin(options, api === null || api === void 0 ? void 0 : (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions, api === null || api === void 0 ? void 0 : api.selection.actions);
145
142
  }
146
143
  }];
147
144
  if (options && options.allowMediaSingle) {
@@ -1,15 +1,10 @@
1
- import { bindKeymapWithCommand, decreaseMediaSize, enter, increaseMediaSize, insertNewLine, moveDown, moveLeft, moveRight, quickDecreaseMediaSize, quickIncreaseMediaSize, tab, undo } from '@atlaskit/editor-common/keymaps';
2
- import { calcMediaSingleMaxWidth, MEDIA_SINGLE_DEFAULT_MIN_PIXEL_WIDTH } from '@atlaskit/editor-common/media-single';
1
+ import { bindKeymapWithCommand, enter, insertNewLine, moveDown, moveLeft, moveRight, tab, undo } from '@atlaskit/editor-common/keymaps';
3
2
  import { GapCursorSelection, Side } from '@atlaskit/editor-common/selection';
4
3
  import { keymap } from '@atlaskit/editor-prosemirror/keymap';
5
4
  import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
6
- import { akEditorDefaultLayoutWidth } from '@atlaskit/editor-shared-styles';
7
5
  import { insertAndSelectCaptionFromMediaSinglePos, selectCaptionFromMediaSinglePos } from '../commands/captions';
8
6
  import { stateKey } from '../pm-plugins/plugin-key';
9
- import { updateMediaSingleWidth } from '../toolbar/commands';
10
- import { calcNewLayout, getSelectedMediaSingle } from '../toolbar/utils';
11
- import { mediaResizeAnnouncerMess } from './mediaResizeAnnouncerMess';
12
- export function keymapPlugin(options, editorAnalyticsAPI, editorSelectionAPI, widthPlugin, getIntl) {
7
+ export function keymapPlugin(options, editorAnalyticsAPI, editorSelectionAPI) {
13
8
  const list = {};
14
9
  bindKeymapWithCommand(undo.common, ignoreLinksInSteps, list);
15
10
  bindKeymapWithCommand(enter.common, splitMediaGroup, list);
@@ -20,10 +15,6 @@ export function keymapPlugin(options, editorAnalyticsAPI, editorSelectionAPI, wi
20
15
  bindKeymapWithCommand(moveRight.common, arrowRightFromMediaSingle(editorSelectionAPI), list);
21
16
  }
22
17
  bindKeymapWithCommand(insertNewLine.common, splitMediaGroup, list);
23
- bindKeymapWithCommand(increaseMediaSize.common, handleMediaIncrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
24
- bindKeymapWithCommand(decreaseMediaSize.common, handleMediaDecrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
25
- bindKeymapWithCommand(quickIncreaseMediaSize.common, handleMediaQuickIncrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
26
- bindKeymapWithCommand(quickDecreaseMediaSize.common, handleMediaQuickDecrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
27
18
  return keymap(list);
28
19
  }
29
20
  const ignoreLinksInSteps = state => {
@@ -35,82 +26,6 @@ const splitMediaGroup = state => {
35
26
  const mediaPluginState = stateKey.getState(state);
36
27
  return mediaPluginState.splitMediaGroup();
37
28
  };
38
- const createAnnouncer = (action, mediaWidth, changeAmount, validation, getIntl) => {
39
- let announcerContainer = document.getElementById('media-announcer') || document.createElement('div');
40
- const intl = getIntl();
41
- if (!announcerContainer.id) {
42
- announcerContainer.id = 'media-announcer';
43
- announcerContainer.setAttribute('role', 'status');
44
- announcerContainer.setAttribute('aria-live', 'polite');
45
- announcerContainer.setAttribute('aria-atomic', 'true');
46
- const style = announcerContainer.style;
47
- style.position = 'absolute';
48
- style.width = '1px';
49
- style.height = '1px';
50
- style.marginTop = '-1px';
51
- style.opacity = '0';
52
- style.overflow = 'hidden';
53
- document.body.appendChild(announcerContainer);
54
- } else {
55
- const newMediaWidth = mediaWidth + changeAmount;
56
- if (validation === 'greater-than-max') {
57
- announcerContainer.textContent = intl.formatMessage(mediaResizeAnnouncerMess.MediaWidthIsMax);
58
- } else if (validation === 'less-than-min') {
59
- announcerContainer.textContent = intl.formatMessage(mediaResizeAnnouncerMess.MediaWidthIsMin);
60
- } else {
61
- announcerContainer.textContent = intl.formatMessage(mediaResizeAnnouncerMess.DefaultMediaWidth, {
62
- action: action,
63
- newMediaWidth: newMediaWidth
64
- });
65
- }
66
- }
67
- };
68
- const handleMediaSizeChange = (editorAnalyticsAPI, widthPlugin, options, changeAmount, action, getIntl) => (state, dispatch) => {
69
- var _selectedNode$node, _selectedNode$node$at, _selectedNode$node2, _selectedNode$node2$a, _widthPlugin$sharedSt;
70
- const selectedNode = getSelectedMediaSingle(state);
71
- const layout = selectedNode === null || selectedNode === void 0 ? void 0 : (_selectedNode$node = selectedNode.node) === null || _selectedNode$node === void 0 ? void 0 : (_selectedNode$node$at = _selectedNode$node.attrs) === null || _selectedNode$node$at === void 0 ? void 0 : _selectedNode$node$at.layout;
72
- const mediaWidth = selectedNode === null || selectedNode === void 0 ? void 0 : (_selectedNode$node2 = selectedNode.node) === null || _selectedNode$node2 === void 0 ? void 0 : (_selectedNode$node2$a = _selectedNode$node2.attrs) === null || _selectedNode$node2$a === void 0 ? void 0 : _selectedNode$node2$a.width;
73
- const contentWidth =
74
- // @ts-ignore readonly sharedState
75
- (widthPlugin === null || widthPlugin === void 0 ? void 0 : (_widthPlugin$sharedSt = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt === void 0 ? void 0 : _widthPlugin$sharedSt.lineLength) || akEditorDefaultLayoutWidth;
76
- const minWidth = MEDIA_SINGLE_DEFAULT_MIN_PIXEL_WIDTH;
77
- let maxWidth;
78
- let validation = 'valid';
79
- let newWidth = mediaWidth + changeAmount;
80
- const intl = getIntl();
81
- if (options !== null && options !== void 0 && options.fullWidthEnabled) {
82
- var _widthPlugin$sharedSt2;
83
- // @ts-ignore readonly sharedState
84
- maxWidth = widthPlugin === null || widthPlugin === void 0 ? void 0 : (_widthPlugin$sharedSt2 = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt2 === void 0 ? void 0 : _widthPlugin$sharedSt2.lineLength;
85
- } else {
86
- var _widthPlugin$sharedSt3;
87
- maxWidth = calcMediaSingleMaxWidth( // @ts-ignore readonly sharedState
88
- widthPlugin === null || widthPlugin === void 0 ? void 0 : (_widthPlugin$sharedSt3 = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt3 === void 0 ? void 0 : _widthPlugin$sharedSt3.width);
89
- }
90
- if (newWidth > maxWidth) {
91
- newWidth = maxWidth;
92
- validation = 'greater-than-max';
93
- } else if (newWidth < minWidth) {
94
- newWidth = minWidth;
95
- validation = 'less-than-min';
96
- } else {
97
- newWidth;
98
- validation = 'valid';
99
- }
100
- if (action === 'increased') {
101
- action = intl.formatMessage(mediaResizeAnnouncerMess.IncreasedAction);
102
- } else if (action === 'decreased') {
103
- action = intl.formatMessage(mediaResizeAnnouncerMess.DecreasedAction);
104
- }
105
- const newLayout = calcNewLayout(newWidth, layout, contentWidth, options === null || options === void 0 ? void 0 : options.fullWidthEnabled);
106
- updateMediaSingleWidth(editorAnalyticsAPI)(newWidth, validation, 'keyboard', newLayout)(state, dispatch);
107
- createAnnouncer(action, mediaWidth, changeAmount, validation, getIntl);
108
- return true;
109
- };
110
- const handleMediaIncrease = (editorAnalyticsAPI, widthPlugin, options, getIntl) => handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, 1, 'increased', getIntl);
111
- const handleMediaDecrease = (editorAnalyticsAPI, widthPlugin, options, getIntl) => handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, -1, 'decreased', getIntl);
112
- const handleMediaQuickIncrease = (editorAnalyticsAPI, widthPlugin, options, getIntl) => handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, 10, 'increased', getIntl);
113
- const handleMediaQuickDecrease = (editorAnalyticsAPI, widthPlugin, options, getIntl) => handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, -10, 'decreased', getIntl);
114
29
  const insertAndSelectCaption = editorAnalyticsAPI => (state, dispatch) => {
115
30
  const {
116
31
  selection,
@@ -6,7 +6,7 @@ import { RawIntlProvider } from 'react-intl-next';
6
6
  import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
7
7
  import { CAPTION_PLACEHOLDER_ID, getMaxWidthForNestedNodeNext } from '@atlaskit/editor-common/media-single';
8
8
  import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
9
- import { browser, ErrorReporter, isInEmptyLine, isInListItem } from '@atlaskit/editor-common/utils';
9
+ import { browser, ErrorReporter } from '@atlaskit/editor-common/utils';
10
10
  import { AllSelection, NodeSelection, Selection, TextSelection } from '@atlaskit/editor-prosemirror/state';
11
11
  import { insertPoint } from '@atlaskit/editor-prosemirror/transform';
12
12
  import { findDomRefAtPos, findParentNodeOfType, findSelectedNodeOfType, isNodeSelection } from '@atlaskit/editor-prosemirror/utils';
@@ -18,9 +18,10 @@ import * as helpers from '../commands/helpers';
18
18
  import { updateMediaSingleNodeAttrs } from '../commands/helpers';
19
19
  import PickerFacade from '../picker-facade';
20
20
  import DropPlaceholder from '../ui/Media/DropPlaceholder';
21
- import { isInsidePotentialEmptyParagraph, removeMediaNode, splitMediaGroup } from '../utils/media-common';
22
- import { canInsertMediaInline, insertMediaGroupNode, insertMediaInlineNode } from '../utils/media-files';
23
- import { insertMediaSingleNode, isMediaSingle } from '../utils/media-single';
21
+ import { removeMediaNode, splitMediaGroup } from '../utils/media-common';
22
+ import { insertMediaGroupNode, insertMediaInlineNode } from '../utils/media-files';
23
+ import { getMediaNodeInsertionType } from '../utils/media-inline';
24
+ import { insertMediaSingleNode } from '../utils/media-single';
24
25
  import { MediaTaskManager } from './mediaTaskManager';
25
26
  import { stateKey } from './plugin-key';
26
27
  export { stateKey } from './plugin-key';
@@ -152,7 +153,7 @@ export class MediaPluginStateImplementation {
152
153
  * called when we insert a new file via the picker (connected via pickerfacade)
153
154
  */
154
155
  _defineProperty(this, "insertFile", (mediaState, onMediaStateChanged, pickerType) => {
155
- var _this$pluginInjection, _this$pluginInjection2, _mediaState$collectio, _this$mediaOptions2;
156
+ var _this$pluginInjection, _this$pluginInjection2, _mediaState$collectio, _this$mediaOptions2, _this$pluginInjection3;
156
157
  const {
157
158
  state
158
159
  } = this.view;
@@ -172,15 +173,18 @@ export class MediaPluginStateImplementation {
172
173
  allUploadsFinished: false
173
174
  });
174
175
  }
175
- if (isMediaSingle(state.schema, mediaStateWithContext.fileMimeType)) {
176
- var _this$pluginInjection3;
177
- // read width state right before inserting to get up-to-date and define values
178
- const widthPluginState = (_this$pluginInjection3 = this.pluginInjectionApi) === null || _this$pluginInjection3 === void 0 ? void 0 : _this$pluginInjection3.width.sharedState.currentState();
179
- insertMediaSingleNode(this.view, mediaStateWithContext, this.getInputMethod(pickerType), collection, this.mediaOptions && this.mediaOptions.alignLeftOnInsert, this.newInsertionBehaviour, widthPluginState, editorAnalyticsAPI);
180
- } else if (getMediaFeatureFlag('mediaInline', (_this$mediaOptions2 = this.mediaOptions) === null || _this$mediaOptions2 === void 0 ? void 0 : _this$mediaOptions2.featureFlags) && !isInEmptyLine(state) && (!isInsidePotentialEmptyParagraph(state) || isInListItem(state)) && canInsertMediaInline(state)) {
181
- insertMediaInlineNode(editorAnalyticsAPI)(this.view, mediaStateWithContext, collection, this.getInputMethod(pickerType));
182
- } else {
183
- insertMediaGroupNode(editorAnalyticsAPI)(this.view, [mediaStateWithContext], collection, this.getInputMethod(pickerType));
176
+ switch (getMediaNodeInsertionType(state, (_this$mediaOptions2 = this.mediaOptions) === null || _this$mediaOptions2 === void 0 ? void 0 : _this$mediaOptions2.featureFlags, mediaStateWithContext.fileMimeType)) {
177
+ case 'inline':
178
+ insertMediaInlineNode(editorAnalyticsAPI)(this.view, mediaStateWithContext, collection, this.getInputMethod(pickerType));
179
+ break;
180
+ case 'block':
181
+ // read width state right before inserting to get up-to-date and define values
182
+ const widthPluginState = (_this$pluginInjection3 = this.pluginInjectionApi) === null || _this$pluginInjection3 === void 0 ? void 0 : _this$pluginInjection3.width.sharedState.currentState();
183
+ insertMediaSingleNode(this.view, mediaStateWithContext, this.getInputMethod(pickerType), collection, this.mediaOptions && this.mediaOptions.alignLeftOnInsert, this.newInsertionBehaviour, widthPluginState, editorAnalyticsAPI);
184
+ break;
185
+ case 'group':
186
+ insertMediaGroupNode(editorAnalyticsAPI)(this.view, [mediaStateWithContext], collection, this.getInputMethod(pickerType));
187
+ break;
184
188
  }
185
189
 
186
190
  // do events when media state changes
@@ -181,7 +181,7 @@ export const setBorderMark = editorAnalyticsAPI => attrs => (state, dispatch) =>
181
181
  }
182
182
  return true;
183
183
  };
184
- export const updateMediaSingleWidth = editorAnalyticsAPI => (width, validation, input, layout) => (state, dispatch) => {
184
+ export const updateMediaSingleWidth = editorAnalyticsAPI => (width, validation, layout) => (state, dispatch) => {
185
185
  const selectedMediaSingleNode = getSelectedMediaSingle(state);
186
186
  if (!selectedMediaSingleNode) {
187
187
  return false;
@@ -324,7 +324,7 @@ const generateMediaSingleFloatingToolbar = (state, intl, options, pluginState, m
324
324
  }) => {
325
325
  var _pluginInjectionApi$a4;
326
326
  const newLayout = calcNewLayout(width, layout, contentWidth, options.fullWidthEnabled, isNested);
327
- updateMediaSingleWidth(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a4 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a4 === void 0 ? void 0 : _pluginInjectionApi$a4.actions)(width, validation, 'floatingToolBar', newLayout)(state, dispatch);
327
+ updateMediaSingleWidth(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a4 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a4 === void 0 ? void 0 : _pluginInjectionApi$a4.actions)(width, validation, newLayout)(state, dispatch);
328
328
  },
329
329
  onMigrate: () => {
330
330
  const tr = state.tr.setNodeMarkup(selectedMediaSingleNode.pos, undefined, {
@@ -1,3 +1,6 @@
1
1
  export const isImage = fileType => {
2
2
  return !!fileType && (fileType.indexOf('image/') > -1 || fileType.indexOf('video/') > -1);
3
+ };
4
+ export const isVideo = fileType => {
5
+ return !!fileType && fileType.includes('video/');
3
6
  };
@@ -0,0 +1,21 @@
1
+ import { isInEmptyLine, isInListItem } from '@atlaskit/editor-common/utils';
2
+ import { getMediaFeatureFlag } from '@atlaskit/media-common';
3
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
4
+ import { canInsertMediaInline } from '../utils/media-files';
5
+ import { isMediaSingle } from '../utils/media-single';
6
+ import { isVideo } from './is-type';
7
+ import { isInsidePotentialEmptyParagraph } from './media-common';
8
+ export const getMediaNodeInsertionType = (state, mediaFeatureFlags, fileMimeType) => {
9
+ const canInsertInlineNode = getMediaFeatureFlag('mediaInline', mediaFeatureFlags) && !isInEmptyLine(state) && (!isInsidePotentialEmptyParagraph(state) || isInListItem(state)) && canInsertMediaInline(state);
10
+ if (getBooleanFF('platform.editor.media.inline-image.base-support')) {
11
+ if (canInsertInlineNode && !isVideo(fileMimeType)) {
12
+ return 'inline';
13
+ }
14
+ }
15
+ if (isMediaSingle(state.schema, fileMimeType)) {
16
+ return 'block';
17
+ } else if (canInsertInlineNode) {
18
+ return 'inline';
19
+ }
20
+ return 'group';
21
+ };