@atlaskit/editor-plugin-media 2.6.7 → 2.7.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 (61) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/cjs/mediaPlugin.js +21 -6
  3. package/dist/cjs/nodeviews/mediaGroup.js +21 -6
  4. package/dist/cjs/nodeviews/mediaInline.js +55 -13
  5. package/dist/cjs/nodeviews/mediaNodeUpdater.js +24 -18
  6. package/dist/cjs/nodeviews/mediaNodeView/index.js +11 -3
  7. package/dist/cjs/nodeviews/mediaSingle.js +88 -49
  8. package/dist/cjs/nodeviews/mediaSingleNext.js +5 -4
  9. package/dist/cjs/pm-plugins/utils/media-files.js +64 -6
  10. package/dist/cjs/ui/CommentBadge/index.js +44 -14
  11. package/dist/cjs/ui/MediaPicker/index.js +15 -3
  12. package/dist/cjs/ui/MediaViewer/MediaViewerContainer.js +3 -3
  13. package/dist/cjs/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +2 -1
  14. package/dist/cjs/ui/ToolbarMedia/index.js +17 -5
  15. package/dist/cjs/ui/hooks/useMediaProvider.js +11 -3
  16. package/dist/cjs/ui/toolbar/utils.js +6 -4
  17. package/dist/es2019/mediaPlugin.js +21 -6
  18. package/dist/es2019/nodeviews/mediaGroup.js +21 -6
  19. package/dist/es2019/nodeviews/mediaInline.js +54 -12
  20. package/dist/es2019/nodeviews/mediaNodeUpdater.js +5 -1
  21. package/dist/es2019/nodeviews/mediaNodeView/index.js +11 -3
  22. package/dist/es2019/nodeviews/mediaSingle.js +60 -25
  23. package/dist/es2019/nodeviews/mediaSingleNext.js +5 -4
  24. package/dist/es2019/pm-plugins/utils/media-files.js +63 -5
  25. package/dist/es2019/ui/CommentBadge/index.js +40 -10
  26. package/dist/es2019/ui/MediaPicker/index.js +15 -3
  27. package/dist/es2019/ui/MediaViewer/MediaViewerContainer.js +4 -4
  28. package/dist/es2019/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +2 -1
  29. package/dist/es2019/ui/ToolbarMedia/index.js +17 -5
  30. package/dist/es2019/ui/hooks/useMediaProvider.js +11 -3
  31. package/dist/es2019/ui/toolbar/utils.js +5 -3
  32. package/dist/esm/mediaPlugin.js +21 -6
  33. package/dist/esm/nodeviews/mediaGroup.js +21 -6
  34. package/dist/esm/nodeviews/mediaInline.js +55 -13
  35. package/dist/esm/nodeviews/mediaNodeUpdater.js +24 -18
  36. package/dist/esm/nodeviews/mediaNodeView/index.js +11 -3
  37. package/dist/esm/nodeviews/mediaSingle.js +88 -49
  38. package/dist/esm/nodeviews/mediaSingleNext.js +5 -4
  39. package/dist/esm/pm-plugins/utils/media-files.js +63 -5
  40. package/dist/esm/ui/CommentBadge/index.js +44 -14
  41. package/dist/esm/ui/MediaPicker/index.js +15 -3
  42. package/dist/esm/ui/MediaViewer/MediaViewerContainer.js +4 -4
  43. package/dist/esm/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +2 -1
  44. package/dist/esm/ui/ToolbarMedia/index.js +17 -5
  45. package/dist/esm/ui/hooks/useMediaProvider.js +11 -3
  46. package/dist/esm/ui/toolbar/utils.js +5 -3
  47. package/dist/types/nodeviews/mediaInline.d.ts +7 -2
  48. package/dist/types/nodeviews/mediaSingleNext.d.ts +3 -4
  49. package/dist/types/nodeviews/types.d.ts +3 -4
  50. package/dist/types/pm-plugins/utils/media-files.d.ts +3 -2
  51. package/dist/types/types/index.d.ts +17 -0
  52. package/dist/types/ui/MediaViewer/MediaViewerContainer.d.ts +4 -3
  53. package/dist/types/ui/toolbar/utils.d.ts +1 -0
  54. package/dist/types-ts4.5/nodeviews/mediaInline.d.ts +7 -2
  55. package/dist/types-ts4.5/nodeviews/mediaSingleNext.d.ts +3 -4
  56. package/dist/types-ts4.5/nodeviews/types.d.ts +3 -4
  57. package/dist/types-ts4.5/pm-plugins/utils/media-files.d.ts +3 -2
  58. package/dist/types-ts4.5/types/index.d.ts +17 -0
  59. package/dist/types-ts4.5/ui/MediaViewer/MediaViewerContainer.d.ts +4 -3
  60. package/dist/types-ts4.5/ui/toolbar/utils.d.ts +1 -0
  61. package/package.json +9 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @atlaskit/editor-plugin-media
2
2
 
3
+ ## 2.7.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#146359](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/146359)
8
+ [`cb179949b078a`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/cb179949b078a) -
9
+ Migrate media to use useSharedPluginStateSelector
10
+ - [#147618](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/147618)
11
+ [`3069d34098b9e`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/3069d34098b9e) -
12
+ Fix image size difference during SSR
13
+ - [#147467](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/147467)
14
+ [`cce4ef288b918`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/cce4ef288b918) -
15
+ [EDITOR-633] Fire document failedToInsert event when media inline fails to be inserted
16
+ - Updated dependencies
17
+
18
+ ## 2.7.0
19
+
20
+ ### Minor Changes
21
+
22
+ - [#143009](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/143009)
23
+ [`6711c20c022e4`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/6711c20c022e4) -
24
+ [UX-3339] Adds a configuration for media insert to only allow for external links.
25
+
3
26
  ## 2.6.7
4
27
 
5
28
  ### Patch Changes
@@ -12,6 +12,7 @@ var _hooks = require("@atlaskit/editor-common/hooks");
12
12
  var _messages = require("@atlaskit/editor-common/messages");
13
13
  var _quickInsert = require("@atlaskit/editor-common/quick-insert");
14
14
  var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
15
+ var _useSharedPluginStateSelector = require("@atlaskit/editor-common/use-shared-plugin-state-selector");
15
16
  var _state = require("@atlaskit/editor-prosemirror/state");
16
17
  var _mediaCommon = require("@atlaskit/media-common");
17
18
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
@@ -61,22 +62,36 @@ var MediaPickerFunctionalComponent = function MediaPickerFunctionalComponent(_re
61
62
  var MediaViewerFunctionalComponent = function MediaViewerFunctionalComponent(_ref2) {
62
63
  var api = _ref2.api,
63
64
  editorView = _ref2.editorView;
64
- var _useSharedPluginState2 = (0, _hooks.useSharedPluginState)(api, ['media']),
65
+ var _useSharedPluginState2 = (0, _hooks.useSharedPluginState)(api, ['media'], {
66
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true)
67
+ }),
65
68
  mediaState = _useSharedPluginState2.mediaState;
69
+ var isMediaViewerVisibleSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'media.isMediaViewerVisible', {
70
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
71
+ });
72
+ var mediaViewerSelectedMediaSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'media.mediaViewerSelectedMedia', {
73
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
74
+ });
75
+ var mediaClientConfigSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'media.mediaClientConfig', {
76
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
77
+ });
78
+ var isMediaViewerVisible = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? isMediaViewerVisibleSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.isMediaViewerVisible;
79
+ var mediaViewerSelectedMedia = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? mediaViewerSelectedMediaSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaViewerSelectedMedia;
80
+ var mediaClientConfig = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? mediaClientConfigSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaClientConfig;
66
81
 
67
82
  // Only traverse document once when media viewer is visible, media viewer items will not update
68
83
  // when document changes are made while media viewer is open
69
84
 
70
85
  var mediaItems = (0, _react.useMemo)(function () {
71
- if (mediaState !== null && mediaState !== void 0 && mediaState.isMediaViewerVisible) {
86
+ if (isMediaViewerVisible) {
72
87
  var mediaNodes = (0, _mediaCommon2.extractMediaNodes)(editorView.state.doc);
73
88
  return (0, _mediaCommon2.createMediaIdentifierArray)(mediaNodes);
74
89
  }
75
90
  // eslint-disable-next-line react-hooks/exhaustive-deps -- only update mediaItems once when media viewer is visible
76
- }, [mediaState === null || mediaState === void 0 ? void 0 : mediaState.isMediaViewerVisible]);
91
+ }, [isMediaViewerVisible]);
77
92
 
78
93
  // Viewer does not have required attributes to render the media viewer
79
- if (!(mediaState !== null && mediaState !== void 0 && mediaState.isMediaViewerVisible) || !(mediaState !== null && mediaState !== void 0 && mediaState.mediaViewerSelectedMedia) || !(mediaState !== null && mediaState !== void 0 && mediaState.mediaClientConfig)) {
94
+ if (!isMediaViewerVisible || !mediaViewerSelectedMedia || !mediaClientConfig) {
80
95
  return null;
81
96
  }
82
97
  var handleOnClose = function handleOnClose() {
@@ -84,9 +99,9 @@ var MediaViewerFunctionalComponent = function MediaViewerFunctionalComponent(_re
84
99
  api === null || api === void 0 || api.core.actions.execute(api === null || api === void 0 ? void 0 : api.media.commands.hideMediaViewer);
85
100
  };
86
101
  return /*#__PURE__*/_react.default.createElement(_PortalWrapper.RenderMediaViewer, {
87
- mediaClientConfig: mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaClientConfig,
102
+ mediaClientConfig: mediaClientConfig,
88
103
  onClose: handleOnClose,
89
- selectedNodeAttrs: mediaState.mediaViewerSelectedMedia,
104
+ selectedNodeAttrs: mediaViewerSelectedMedia,
90
105
  items: mediaItems
91
106
  });
92
107
  };
@@ -19,6 +19,7 @@ var _hooks = require("@atlaskit/editor-common/hooks");
19
19
  var _media = require("@atlaskit/editor-common/media");
20
20
  var _providerFactory = require("@atlaskit/editor-common/provider-factory");
21
21
  var _reactNodeView = _interopRequireDefault(require("@atlaskit/editor-common/react-node-view"));
22
+ var _useSharedPluginStateSelector = require("@atlaskit/editor-common/use-shared-plugin-state-selector");
22
23
  var _utils = require("@atlaskit/editor-common/utils");
23
24
  var _closeEditorClose = _interopRequireDefault(require("@atlaskit/icon/core/migration/close--editor-close"));
24
25
  var _mediaCommon = require("@atlaskit/media-common");
@@ -311,13 +312,25 @@ var _default = exports.default = IntlMediaGroup;
311
312
  function MediaGroupNodeViewInternal(_ref3) {
312
313
  var renderFn = _ref3.renderFn,
313
314
  pluginInjectionApi = _ref3.pluginInjectionApi;
314
- var _useSharedPluginState = (0, _hooks.useSharedPluginState)(pluginInjectionApi, ['editorDisabled', 'editorViewMode']),
315
+ var _useSharedPluginState = (0, _hooks.useSharedPluginState)(pluginInjectionApi, ['editorDisabled', 'editorViewMode'], {
316
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true)
317
+ }),
315
318
  editorDisabledPlugin = _useSharedPluginState.editorDisabledState,
316
319
  editorViewModePlugin = _useSharedPluginState.editorViewModeState;
320
+ var editorDisabledSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(pluginInjectionApi, 'editorDisabled.editorDisabled', {
321
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
322
+ });
323
+ var editorViewModeSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(pluginInjectionApi, 'editorViewMode.mode', {
324
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
325
+ });
326
+ var editorDisabled = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? editorDisabledSelector : editorDisabledPlugin === null || editorDisabledPlugin === void 0 ? void 0 : editorDisabledPlugin.editorDisabled;
327
+ var editorViewMode = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? editorViewModeSelector : editorViewModePlugin === null || editorViewModePlugin === void 0 ? void 0 : editorViewModePlugin.mode;
317
328
  var mediaProvider = (0, _useMediaProvider.useMediaProvider)(pluginInjectionApi);
318
329
  return renderFn({
319
330
  editorDisabledPlugin: editorDisabledPlugin,
320
331
  editorViewModePlugin: editorViewModePlugin,
332
+ editorDisabled: editorDisabled,
333
+ editorViewMode: editorViewMode,
321
334
  mediaProvider: mediaProvider
322
335
  });
323
336
  }
@@ -343,7 +356,9 @@ var MediaGroupNodeView = /*#__PURE__*/function (_ReactNodeView) {
343
356
  var renderFn = function renderFn(_ref5) {
344
357
  var editorDisabledPlugin = _ref5.editorDisabledPlugin,
345
358
  editorViewModePlugin = _ref5.editorViewModePlugin,
346
- mediaProviderFromState = _ref5.mediaProvider;
359
+ mediaProviderFromState = _ref5.mediaProvider,
360
+ editorDisabled = _ref5.editorDisabled,
361
+ editorViewMode = _ref5.editorViewMode;
347
362
  var mediaProvider = mediaProviderFromState ? Promise.resolve(mediaProviderFromState) : undefined;
348
363
  if (!mediaProvider) {
349
364
  return null;
@@ -354,7 +369,7 @@ var MediaGroupNodeView = /*#__PURE__*/function (_ReactNodeView) {
354
369
  getPos: getPos,
355
370
  view: _this3.view,
356
371
  forwardRef: forwardRef,
357
- disabled: (editorDisabledPlugin || {}).editorDisabled,
372
+ disabled: editorDisabled,
358
373
  allowLazyLoading: mediaOptions.allowLazyLoading,
359
374
  mediaProvider: mediaProvider,
360
375
  contextIdentifierProvider: contextIdentifierProvider,
@@ -362,7 +377,7 @@ var MediaGroupNodeView = /*#__PURE__*/function (_ReactNodeView) {
362
377
  anchorPos: _this3.view.state.selection.$anchor.pos,
363
378
  headPos: _this3.view.state.selection.$head.pos,
364
379
  mediaOptions: mediaOptions,
365
- editorViewMode: (editorViewModePlugin === null || editorViewModePlugin === void 0 ? void 0 : editorViewModePlugin.mode) === 'view'
380
+ editorViewMode: editorViewMode === 'view'
366
381
  });
367
382
  }
368
383
  return /*#__PURE__*/_react.default.createElement(IntlMediaGroup, {
@@ -370,7 +385,7 @@ var MediaGroupNodeView = /*#__PURE__*/function (_ReactNodeView) {
370
385
  getPos: getPos,
371
386
  view: _this3.view,
372
387
  forwardRef: forwardRef,
373
- disabled: (editorDisabledPlugin || {}).editorDisabled,
388
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? editorDisabled : (editorDisabledPlugin || {}).editorDisabled,
374
389
  allowLazyLoading: mediaOptions.allowLazyLoading,
375
390
  mediaProvider: mediaProvider,
376
391
  contextIdentifierProvider: contextIdentifierProvider,
@@ -378,7 +393,7 @@ var MediaGroupNodeView = /*#__PURE__*/function (_ReactNodeView) {
378
393
  anchorPos: _this3.view.state.selection.$anchor.pos,
379
394
  headPos: _this3.view.state.selection.$head.pos,
380
395
  mediaOptions: mediaOptions,
381
- editorViewMode: (editorViewModePlugin === null || editorViewModePlugin === void 0 ? void 0 : editorViewModePlugin.mode) === 'view'
396
+ editorViewMode: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? editorViewMode === 'view' : (editorViewModePlugin === null || editorViewModePlugin === void 0 ? void 0 : editorViewModePlugin.mode) === 'view'
382
397
  });
383
398
  };
384
399
  return /*#__PURE__*/_react.default.createElement(MediaGroupNodeViewInternal, {
@@ -21,10 +21,12 @@ var _hooks = require("@atlaskit/editor-common/hooks");
21
21
  var _mediaInline = require("@atlaskit/editor-common/media-inline");
22
22
  var _providerFactory = require("@atlaskit/editor-common/provider-factory");
23
23
  var _selectionBasedNodeView = require("@atlaskit/editor-common/selection-based-node-view");
24
+ var _useSharedPluginStateSelector = require("@atlaskit/editor-common/use-shared-plugin-state-selector");
24
25
  var _mediaCard = require("@atlaskit/media-card");
25
26
  var _mediaClientReact = require("@atlaskit/media-client-react");
26
27
  var _mediaUi = require("@atlaskit/media-ui");
27
28
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
29
+ var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
28
30
  var _isType = require("../pm-plugins/utils/is-type");
29
31
  var _MediaViewerContainer = require("../ui/MediaViewer/MediaViewerContainer");
30
32
  var _mediaNodeUpdater = require("./mediaNodeUpdater");
@@ -58,7 +60,7 @@ var updateMediaNodeAttributes = /*#__PURE__*/function () {
58
60
  return _regenerator.default.wrap(function _callee$(_context) {
59
61
  while (1) switch (_context.prev = _context.next) {
60
62
  case 0:
61
- addPendingTask = props.mediaPluginState.addPendingTask;
63
+ addPendingTask = props.addPendingTask;
62
64
  node = props.node;
63
65
  if (node) {
64
66
  _context.next = 4;
@@ -111,9 +113,9 @@ var updateMediaNodeAttributes = /*#__PURE__*/function () {
111
113
  }();
112
114
  var handleNewNode = exports.handleNewNode = function handleNewNode(props) {
113
115
  var node = props.node,
114
- mediaPluginState = props.mediaPluginState,
116
+ handleMediaNodeMount = props.handleMediaNodeMount,
115
117
  getPos = props.getPos;
116
- mediaPluginState.handleMediaNodeMount(node, function () {
118
+ handleMediaNodeMount(node, function () {
117
119
  return getPos();
118
120
  });
119
121
  };
@@ -134,8 +136,8 @@ var MediaInline = exports.MediaInline = function MediaInline(props) {
134
136
  updateMediaNodeAttributes(props, mediaNodeUpdater);
135
137
  updateViewMediaClientConfig(props);
136
138
  return function () {
137
- var mediaPluginState = props.mediaPluginState;
138
- mediaPluginState.handleMediaNodeUnmount(props.node);
139
+ var handleMediaNodeUnmount = props.handleMediaNodeUnmount;
140
+ handleMediaNodeUnmount(props.node);
139
141
  };
140
142
  }, [props]);
141
143
  var updateViewMediaClientConfig = /*#__PURE__*/function () {
@@ -190,7 +192,7 @@ var MediaInline = exports.MediaInline = function MediaInline(props) {
190
192
  isSelected: false
191
193
  });
192
194
  }
193
- var allowInlineImages = props.mediaPluginState.allowInlineImages;
195
+ var allowInlineImages = props.allowInlineImages;
194
196
  var borderMark = (_props$node = props.node) === null || _props$node === void 0 || (_props$node = _props$node.marks) === null || _props$node === void 0 ? void 0 : _props$node.find(function (mark) {
195
197
  return mark.type.name === 'border';
196
198
  });
@@ -211,7 +213,8 @@ var MediaInline = exports.MediaInline = function MediaInline(props) {
211
213
  }
212
214
  return (0, _react2.jsx)(_MediaViewerContainer.MediaViewerContainer, {
213
215
  mediaNode: props.node,
214
- mediaPluginState: props.mediaPluginState,
216
+ selectedMediaContainerNode: props.selectedMediaContainerNode,
217
+ mediaClientConfig: props.mediaClientConfig,
215
218
  isEditorViewMode: props.editorViewMode,
216
219
  isSelected: props.isSelected,
217
220
  isInline: (0, _platformFeatureFlags.fg)('platform_editor_render_media_viewer_as_inline')
@@ -229,25 +232,64 @@ var MediaInlineSharedState = function MediaInlineSharedState(_ref3) {
229
232
  contextIdentifierProvider = _ref3.contextIdentifierProvider,
230
233
  api = _ref3.api,
231
234
  view = _ref3.view;
232
- var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['editorViewMode', 'media']),
235
+ var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['editorViewMode', 'media'], {
236
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true)
237
+ }),
233
238
  editorViewModeState = _useSharedPluginState.editorViewModeState,
234
239
  mediaState = _useSharedPluginState.mediaState;
240
+ var viewModeSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'editorViewMode.mode', {
241
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
242
+ });
243
+ var mediaProviderSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'media.mediaProvider', {
244
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
245
+ });
246
+ var handleMediaNodeMountSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'media.handleMediaNodeMount', {
247
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
248
+ });
249
+ var handleMediaNodeUnmountSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'media.handleMediaNodeUnmount', {
250
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
251
+ });
252
+ var allowInlineImagesSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'media.allowInlineImages', {
253
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
254
+ });
255
+ var addPendingTaskSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'media.addPendingTask', {
256
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
257
+ });
258
+ var selectedMediaContainerNodeSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'media.selectedMediaContainerNode', {
259
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
260
+ });
261
+ var mediaClientConfigSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'media.mediaClientConfig', {
262
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
263
+ });
264
+ var viewMode = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? viewModeSelector : editorViewModeState === null || editorViewModeState === void 0 ? void 0 : editorViewModeState.mode;
265
+ var mediaProvider = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? mediaProviderSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaProvider;
266
+ var handleMediaNodeMount = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? handleMediaNodeMountSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.handleMediaNodeMount;
267
+ var handleMediaNodeUnmount = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? handleMediaNodeUnmountSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.handleMediaNodeUnmount;
268
+ var allowInlineImages = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? allowInlineImagesSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.allowInlineImages;
269
+ var addPendingTask = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? addPendingTaskSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.addPendingTask;
270
+ var selectedMediaContainerNode = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? selectedMediaContainerNodeSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.selectedMediaContainerNode;
271
+ var mediaClientConfig = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? mediaClientConfigSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaClientConfig;
235
272
  var newMediaProvider = (0, _react.useMemo)(function () {
236
- return mediaState !== null && mediaState !== void 0 && mediaState.mediaProvider ? Promise.resolve(mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaProvider) : undefined;
237
- }, [mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaProvider]);
238
- if (!mediaState || !newMediaProvider) {
273
+ return mediaProvider ? Promise.resolve(mediaProvider) : undefined;
274
+ }, [mediaProvider]);
275
+ if (!handleMediaNodeMount || !handleMediaNodeUnmount || !addPendingTask || !selectedMediaContainerNode || !mediaClientConfig || !newMediaProvider) {
239
276
  return null;
240
277
  }
241
278
  return (0, _react2.jsx)(MediaInline, {
242
279
  identifier: identifier,
243
280
  mediaProvider: newMediaProvider,
244
- mediaPluginState: mediaState,
281
+ handleMediaNodeMount: handleMediaNodeMount,
282
+ handleMediaNodeUnmount: handleMediaNodeUnmount,
283
+ allowInlineImages: allowInlineImages,
284
+ addPendingTask: addPendingTask,
285
+ selectedMediaContainerNode: selectedMediaContainerNode,
286
+ mediaClientConfig: mediaClientConfig,
245
287
  node: node,
246
288
  isSelected: isSelected,
247
289
  view: view,
248
290
  getPos: getPos,
249
291
  contextIdentifierProvider: contextIdentifierProvider,
250
- editorViewMode: (editorViewModeState === null || editorViewModeState === void 0 ? void 0 : editorViewModeState.mode) === 'view'
292
+ editorViewMode: viewMode === 'view'
251
293
  });
252
294
  };
253
295
  var MediaInlineNodeView = exports.MediaInlineNodeView = /*#__PURE__*/function (_SelectionBasedNodeVi) {
@@ -254,41 +254,47 @@ var MediaNodeUpdater = exports.MediaNodeUpdater = /*#__PURE__*/function () {
254
254
  })));
255
255
  (0, _defineProperty2.default)(this, "uploadExternalMedia", /*#__PURE__*/function () {
256
256
  var _ref8 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(getPos) {
257
- var node, mediaProvider, uploadMediaClientConfig, mediaClient, collection, uploader, uploadableFileUpfrontIds, dimensions, pos;
257
+ var _this$props, node, mediaOptions, mediaProvider, uploadMediaClientConfig, mediaClient, collection, uploader, uploadableFileUpfrontIds, dimensions, pos;
258
258
  return _regenerator.default.wrap(function _callee7$(_context7) {
259
259
  while (1) switch (_context7.prev = _context7.next) {
260
260
  case 0:
261
- node = _this.props.node;
262
- _context7.next = 3;
263
- return _this.props.mediaProvider;
261
+ _this$props = _this.props, node = _this$props.node, mediaOptions = _this$props.mediaOptions;
262
+ if (!(mediaOptions !== null && mediaOptions !== void 0 && mediaOptions.isExternalMediaUploadDisabled)) {
263
+ _context7.next = 3;
264
+ break;
265
+ }
266
+ return _context7.abrupt("return");
264
267
  case 3:
268
+ _context7.next = 5;
269
+ return _this.props.mediaProvider;
270
+ case 5:
265
271
  mediaProvider = _context7.sent;
266
272
  if (!(node && mediaProvider)) {
267
- _context7.next = 24;
273
+ _context7.next = 26;
268
274
  break;
269
275
  }
270
276
  uploadMediaClientConfig = mediaProvider.uploadMediaClientConfig;
271
277
  if (!(!uploadMediaClientConfig || !node.attrs.url)) {
272
- _context7.next = 8;
278
+ _context7.next = 10;
273
279
  break;
274
280
  }
275
281
  return _context7.abrupt("return");
276
- case 8:
282
+ case 10:
277
283
  mediaClient = (0, _mediaClientReact.getMediaClient)(uploadMediaClientConfig);
278
284
  collection = mediaProvider.uploadParams && mediaProvider.uploadParams.collection;
279
- _context7.prev = 10;
280
- _context7.next = 13;
285
+ _context7.prev = 12;
286
+ _context7.next = 15;
281
287
  return mediaClient.file.uploadExternal(node.attrs.url, collection);
282
- case 13:
288
+ case 15:
283
289
  uploader = _context7.sent;
284
290
  uploadableFileUpfrontIds = uploader.uploadableFileUpfrontIds, dimensions = uploader.dimensions;
285
291
  pos = getPos();
286
292
  if (!(typeof pos !== 'number')) {
287
- _context7.next = 18;
293
+ _context7.next = 20;
288
294
  break;
289
295
  }
290
296
  return _context7.abrupt("return");
291
- case 18:
297
+ case 20:
292
298
  (0, _helpers.replaceExternalMedia)(pos + 1, {
293
299
  id: uploadableFileUpfrontIds.id,
294
300
  collection: collection,
@@ -296,11 +302,11 @@ var MediaNodeUpdater = exports.MediaNodeUpdater = /*#__PURE__*/function () {
296
302
  width: dimensions.width,
297
303
  occurrenceKey: uploadableFileUpfrontIds.occurrenceKey
298
304
  })(_this.props.view.state, _this.props.view.dispatch);
299
- _context7.next = 24;
305
+ _context7.next = 26;
300
306
  break;
301
- case 21:
302
- _context7.prev = 21;
303
- _context7.t0 = _context7["catch"](10);
307
+ case 23:
308
+ _context7.prev = 23;
309
+ _context7.t0 = _context7["catch"](12);
304
310
  //keep it as external media
305
311
  if (_this.props.dispatchAnalyticsEvent) {
306
312
  _this.props.dispatchAnalyticsEvent({
@@ -309,11 +315,11 @@ var MediaNodeUpdater = exports.MediaNodeUpdater = /*#__PURE__*/function () {
309
315
  eventType: _analytics.EVENT_TYPE.OPERATIONAL
310
316
  });
311
317
  }
312
- case 24:
318
+ case 26:
313
319
  case "end":
314
320
  return _context7.stop();
315
321
  }
316
- }, _callee7, null, [[10, 21]]);
322
+ }, _callee7, null, [[12, 23]]);
317
323
  }));
318
324
  return function (_x3) {
319
325
  return _ref8.apply(this, arguments);
@@ -18,7 +18,9 @@ var _hooks = require("@atlaskit/editor-common/hooks");
18
18
  var _mediaSingle = require("@atlaskit/editor-common/media-single");
19
19
  var _providerFactory = require("@atlaskit/editor-common/provider-factory");
20
20
  var _selectionBasedNodeView = require("@atlaskit/editor-common/selection-based-node-view");
21
+ var _useSharedPluginStateSelector = require("@atlaskit/editor-common/use-shared-plugin-state-selector");
21
22
  var _mediaClient = require("@atlaskit/media-client");
23
+ var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
22
24
  var _helpers = require("../../pm-plugins/commands/helpers");
23
25
  var _mediaCommon = require("../../pm-plugins/utils/media-common");
24
26
  var _media = _interopRequireDefault(require("./media"));
@@ -32,12 +34,18 @@ function _superPropGet(t, o, e, r) { var p = (0, _get2.default)((0, _getPrototyp
32
34
  var MediaNodeWithProviders = function MediaNodeWithProviders(_ref) {
33
35
  var pluginInjectionApi = _ref.pluginInjectionApi,
34
36
  innerComponent = _ref.innerComponent;
35
- var _useSharedPluginState = (0, _hooks.useSharedPluginState)(pluginInjectionApi, ['width', 'media']),
37
+ var _useSharedPluginState = (0, _hooks.useSharedPluginState)(pluginInjectionApi, ['width', 'media'], {
38
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true)
39
+ }),
36
40
  widthState = _useSharedPluginState.widthState,
37
41
  mediaState = _useSharedPluginState.mediaState;
42
+ var mediaProviderSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(pluginInjectionApi, 'media.mediaProvider', {
43
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
44
+ });
45
+ var mediaProvider = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? mediaProviderSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaProvider;
38
46
  return innerComponent({
39
- width: widthState,
40
- mediaProvider: mediaState !== null && mediaState !== void 0 && mediaState.mediaProvider ? Promise.resolve(mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaProvider) : undefined
47
+ width: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? widthState : undefined,
48
+ mediaProvider: mediaProvider ? Promise.resolve(mediaProvider) : undefined
41
49
  });
42
50
  };
43
51
  function isMediaDecorationSpec(decoration) {