@atlaskit/editor-plugin-media 2.7.0 → 2.7.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 (59) hide show
  1. package/CHANGELOG.md +24 -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/mediaNodeView/index.js +11 -3
  6. package/dist/cjs/nodeviews/mediaSingle.js +87 -48
  7. package/dist/cjs/nodeviews/mediaSingleNext.js +5 -4
  8. package/dist/cjs/pm-plugins/utils/media-files.js +64 -6
  9. package/dist/cjs/ui/CommentBadge/index.js +44 -14
  10. package/dist/cjs/ui/ImageBorder/styles.js +1 -2
  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/mediaNodeView/index.js +11 -3
  21. package/dist/es2019/nodeviews/mediaSingle.js +59 -24
  22. package/dist/es2019/nodeviews/mediaSingleNext.js +5 -4
  23. package/dist/es2019/pm-plugins/utils/media-files.js +63 -5
  24. package/dist/es2019/ui/CommentBadge/index.js +40 -10
  25. package/dist/es2019/ui/ImageBorder/styles.js +1 -2
  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/mediaNodeView/index.js +11 -3
  36. package/dist/esm/nodeviews/mediaSingle.js +87 -48
  37. package/dist/esm/nodeviews/mediaSingleNext.js +5 -4
  38. package/dist/esm/pm-plugins/utils/media-files.js +63 -5
  39. package/dist/esm/ui/CommentBadge/index.js +44 -14
  40. package/dist/esm/ui/ImageBorder/styles.js +1 -2
  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/ui/MediaViewer/MediaViewerContainer.d.ts +4 -3
  52. package/dist/types/ui/toolbar/utils.d.ts +1 -0
  53. package/dist/types-ts4.5/nodeviews/mediaInline.d.ts +7 -2
  54. package/dist/types-ts4.5/nodeviews/mediaSingleNext.d.ts +3 -4
  55. package/dist/types-ts4.5/nodeviews/types.d.ts +3 -4
  56. package/dist/types-ts4.5/pm-plugins/utils/media-files.d.ts +3 -2
  57. package/dist/types-ts4.5/ui/MediaViewer/MediaViewerContainer.d.ts +4 -3
  58. package/dist/types-ts4.5/ui/toolbar/utils.d.ts +1 -0
  59. package/package.json +10 -4
@@ -3,13 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.insertMediaInlineNode = exports.insertMediaGroupNode = exports.getPosInList = exports.canInsertMediaInline = void 0;
6
+ exports.insertMediaInlineNode = exports.insertMediaGroupNode = exports.getPosInList = exports.getFailToInsertAnalytics = exports.canInsertMediaInline = void 0;
7
7
  var _analytics = require("@atlaskit/editor-common/analytics");
8
8
  var _mediaInline = require("@atlaskit/editor-common/media-inline");
9
9
  var _selection = require("@atlaskit/editor-common/selection");
10
10
  var _utils = require("@atlaskit/editor-common/utils");
11
11
  var _model = require("@atlaskit/editor-prosemirror/model");
12
+ var _transform = require("@atlaskit/editor-prosemirror/transform");
12
13
  var _utils2 = require("@atlaskit/editor-prosemirror/utils");
14
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
13
15
  var _isType = require("./is-type");
14
16
  var _mediaCommon = require("./media-common");
15
17
  var _mediaInline2 = require("./media-inline");
@@ -52,7 +54,21 @@ var getInsertMediaInlineAnalytics = function getInsertMediaInlineAnalytics(media
52
54
  eventType: _analytics.EVENT_TYPE.TRACK
53
55
  };
54
56
  };
55
-
57
+ var getFailToInsertAnalytics = exports.getFailToInsertAnalytics = function getFailToInsertAnalytics(mediaState, actionSubjectId, inputMethod, insertMediaVia, reason) {
58
+ var media = mediaState.fileMimeType || 'unknown';
59
+ return {
60
+ action: _analytics.ACTION.FAILED_TO_INSERT,
61
+ actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
62
+ actionSubjectId: actionSubjectId,
63
+ attributes: {
64
+ inputMethod: inputMethod,
65
+ fileExtension: media,
66
+ insertMediaVia: insertMediaVia,
67
+ reason: reason
68
+ },
69
+ eventType: _analytics.EVENT_TYPE.OPERATIONAL
70
+ };
71
+ };
56
72
  /**
57
73
  * Check if current editor selections is a media group or not.
58
74
  * @param state Editor state
@@ -75,6 +91,27 @@ function shouldAppendParagraph(state, node) {
75
91
  return ((0, _utils.insideTableCell)(state) || (0, _utils.isInListItem)(state) || (0, _utils.isInLayoutColumn)(state) || (0, _selection.atTheEndOfDoc)(state) && (!(0, _mediaCommon.posOfPrecedingMediaGroup)(state) || (0, _mediaCommon.isSelectionNonMediaBlockNode)(state))) && !wasMediaNode;
76
92
  }
77
93
 
94
+ /**
95
+ * Check if node of type has been inserted successfully
96
+ */
97
+ var hasInsertedNodeOfType = function hasInsertedNodeOfType(tr, nodeType) {
98
+ var _tr$doc$nodeAt;
99
+ var insertPos = -1;
100
+ tr.steps.forEach(function (step) {
101
+ if (step instanceof _transform.ReplaceStep) {
102
+ step.slice.content.forEach(function (node) {
103
+ if (node.type.name === nodeType) {
104
+ insertPos = step.from;
105
+ }
106
+ });
107
+ }
108
+ });
109
+ if (insertPos === -1 || ((_tr$doc$nodeAt = tr.doc.nodeAt(insertPos)) === null || _tr$doc$nodeAt === void 0 ? void 0 : _tr$doc$nodeAt.type.name) !== nodeType) {
110
+ return false;
111
+ }
112
+ return true;
113
+ };
114
+
78
115
  /**
79
116
  * Create a new media inline to insert the new media.
80
117
  * @param view Editor view
@@ -129,12 +166,33 @@ var insertMediaInlineNode = exports.insertMediaInlineNode = function insertMedia
129
166
 
130
167
  // Delete the selection if a selection is made
131
168
  var deleteRange = findDeleteRange(state);
132
- if (!deleteRange) {
133
- tr.insert(pos, content);
169
+ if ((0, _platformFeatureFlags.fg)('platform_editor_track_media_fail_to_insert')) {
170
+ var payload;
171
+ try {
172
+ if (!deleteRange) {
173
+ tr.insert(pos, content);
174
+ } else {
175
+ tr.insert(pos, content).deleteRange(deleteRange.start, deleteRange.end);
176
+ }
177
+ if (hasInsertedNodeOfType(tr, 'mediaInline')) {
178
+ payload = getInsertMediaInlineAnalytics(mediaState, inputMethod, insertMediaVia);
179
+ } else {
180
+ payload = getFailToInsertAnalytics(mediaState, _analytics.ACTION_SUBJECT_ID.MEDIA_INLINE, inputMethod, insertMediaVia);
181
+ }
182
+ } catch (error) {
183
+ payload = getFailToInsertAnalytics(mediaState, _analytics.ACTION_SUBJECT_ID.MEDIA_INLINE, inputMethod, insertMediaVia,
184
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
185
+ error.toString());
186
+ }
187
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(payload)(tr);
134
188
  } else {
135
- tr.insert(pos, content).deleteRange(deleteRange.start, deleteRange.end);
189
+ if (!deleteRange) {
190
+ tr.insert(pos, content);
191
+ } else {
192
+ tr.insert(pos, content).deleteRange(deleteRange.start, deleteRange.end);
193
+ }
194
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(getInsertMediaInlineAnalytics(mediaState, inputMethod, insertMediaVia))(tr);
136
195
  }
137
- editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(getInsertMediaInlineAnalytics(mediaState, inputMethod, insertMediaVia))(tr);
138
196
  dispatch(tr);
139
197
  return true;
140
198
  };
@@ -12,6 +12,8 @@ var _reactIntlNext = require("react-intl-next");
12
12
  var _analytics = require("@atlaskit/editor-common/analytics");
13
13
  var _hooks = require("@atlaskit/editor-common/hooks");
14
14
  var _mediaSingle = require("@atlaskit/editor-common/media-single");
15
+ var _useSharedPluginStateSelector = require("@atlaskit/editor-common/use-shared-plugin-state-selector");
16
+ var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
15
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
16
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
17
19
  var CommentBadgeWrapper = function CommentBadgeWrapper(_ref) {
@@ -26,23 +28,37 @@ var CommentBadgeWrapper = function CommentBadgeWrapper(_ref) {
26
28
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
27
29
  entered = _useState2[0],
28
30
  setEntered = _useState2[1];
29
- var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['annotation']),
31
+ var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['annotation'], {
32
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true)
33
+ }),
30
34
  annotationState = _useSharedPluginState.annotationState;
35
+ var selectedAnnotationsSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'annotation.selectedAnnotations', {
36
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
37
+ });
38
+ var isInlineCommentViewClosedSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'annotation.isInlineCommentViewClosed', {
39
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
40
+ });
41
+ var annotationsSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'annotation.annotations', {
42
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
43
+ });
44
+ var selectedAnnotations = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? selectedAnnotationsSelector : annotationState === null || annotationState === void 0 ? void 0 : annotationState.selectedAnnotations;
45
+ var isInlineCommentViewClosed = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? isInlineCommentViewClosedSelector : annotationState === null || annotationState === void 0 ? void 0 : annotationState.isInlineCommentViewClosed;
46
+ var annotations = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? annotationsSelector : annotationState === null || annotationState === void 0 ? void 0 : annotationState.annotations;
31
47
  var _view$state$schema = view.state.schema,
32
48
  media = _view$state$schema.nodes.media,
33
49
  annotation = _view$state$schema.marks.annotation,
34
50
  state = view.state,
35
51
  dispatch = view.dispatch;
36
52
  var status = (0, _react.useMemo)(function () {
37
- if (!(annotationState !== null && annotationState !== void 0 && annotationState.selectedAnnotations) || !mediaNode) {
53
+ if (!selectedAnnotations || !mediaNode) {
38
54
  return 'default';
39
55
  }
40
- return annotationState.selectedAnnotations.some(function (annotation) {
56
+ return selectedAnnotations.some(function (annotation) {
41
57
  return !!mediaNode.marks.find(function (mark) {
42
58
  return mark.attrs.id === annotation.id;
43
59
  });
44
- }) && !annotationState.isInlineCommentViewClosed ? 'active' : 'default';
45
- }, [annotationState, mediaNode]);
60
+ }) && !isInlineCommentViewClosed ? 'active' : 'default';
61
+ }, [selectedAnnotations, isInlineCommentViewClosed, mediaNode]);
46
62
  var onClick = (0, _react.useCallback)(function () {
47
63
  if (api.annotation && mediaNode) {
48
64
  var showCommentForBlockNode = api.annotation.actions.showCommentForBlockNode;
@@ -50,8 +66,8 @@ var CommentBadgeWrapper = function CommentBadgeWrapper(_ref) {
50
66
  }
51
67
  }, [api.annotation, dispatch, mediaNode, state]);
52
68
  var pos = getPos();
53
- var hasNoComments = !Number.isFinite(pos) || !(annotationState !== null && annotationState !== void 0 && annotationState.annotations) || !mediaNode || mediaNode.type !== media || mediaNode.marks.every(function (maybeAnnotation) {
54
- return maybeAnnotation.type !== annotation || !(maybeAnnotation.attrs.id in annotationState.annotations) || annotationState.annotations[maybeAnnotation.attrs.id];
69
+ var hasNoComments = !Number.isFinite(pos) || !annotations || !mediaNode || mediaNode.type !== media || mediaNode.marks.every(function (maybeAnnotation) {
70
+ return maybeAnnotation.type !== annotation || !(maybeAnnotation.attrs.id in annotations) || annotations[maybeAnnotation.attrs.id];
55
71
  });
56
72
  if (!isDrafting && hasNoComments || !mediaNode) {
57
73
  return null;
@@ -98,23 +114,37 @@ var CommentBadgeNextWrapper = exports.CommentBadgeNextWrapper = function Comment
98
114
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
99
115
  entered = _useState4[0],
100
116
  setEntered = _useState4[1];
101
- var _useSharedPluginState2 = (0, _hooks.useSharedPluginState)(api, ['annotation']),
117
+ var _useSharedPluginState2 = (0, _hooks.useSharedPluginState)(api, ['annotation'], {
118
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true)
119
+ }),
102
120
  annotationState = _useSharedPluginState2.annotationState;
121
+ var selectedAnnotationsSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'annotation.selectedAnnotations', {
122
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
123
+ });
124
+ var isInlineCommentViewClosedSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'annotation.isInlineCommentViewClosed', {
125
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
126
+ });
127
+ var annotationsSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'annotation.annotations', {
128
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
129
+ });
130
+ var selectedAnnotations = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? selectedAnnotationsSelector : annotationState === null || annotationState === void 0 ? void 0 : annotationState.selectedAnnotations;
131
+ var isInlineCommentViewClosed = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? isInlineCommentViewClosedSelector : annotationState === null || annotationState === void 0 ? void 0 : annotationState.isInlineCommentViewClosed;
132
+ var annotations = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? annotationsSelector : annotationState === null || annotationState === void 0 ? void 0 : annotationState.annotations;
103
133
  var _view$state$schema2 = view.state.schema,
104
134
  media = _view$state$schema2.nodes.media,
105
135
  annotation = _view$state$schema2.marks.annotation,
106
136
  state = view.state,
107
137
  dispatch = view.dispatch;
108
138
  var status = (0, _react.useMemo)(function () {
109
- if (!(annotationState !== null && annotationState !== void 0 && annotationState.selectedAnnotations) || !mediaNode) {
139
+ if (!selectedAnnotations || !mediaNode) {
110
140
  return 'default';
111
141
  }
112
- return annotationState.selectedAnnotations.some(function (annotation) {
142
+ return selectedAnnotations.some(function (annotation) {
113
143
  return !!mediaNode.marks.find(function (mark) {
114
144
  return mark.attrs.id === annotation.id;
115
145
  });
116
- }) && !annotationState.isInlineCommentViewClosed ? 'active' : 'default';
117
- }, [annotationState, mediaNode]);
146
+ }) && !isInlineCommentViewClosed ? 'active' : 'default';
147
+ }, [selectedAnnotations, isInlineCommentViewClosed, mediaNode]);
118
148
  var onClick = (0, _react.useCallback)(function () {
119
149
  if (api.annotation && mediaNode) {
120
150
  var showCommentForBlockNode = api.annotation.actions.showCommentForBlockNode;
@@ -122,8 +152,8 @@ var CommentBadgeNextWrapper = exports.CommentBadgeNextWrapper = function Comment
122
152
  }
123
153
  }, [api.annotation, dispatch, mediaNode, state]);
124
154
  var pos = getPos();
125
- var hasNoComments = !Number.isFinite(pos) || !(annotationState !== null && annotationState !== void 0 && annotationState.annotations) || !mediaNode || mediaNode.type !== media || mediaNode.marks.every(function (maybeAnnotation) {
126
- return maybeAnnotation.type !== annotation || !(maybeAnnotation.attrs.id in annotationState.annotations) || annotationState.annotations[maybeAnnotation.attrs.id];
155
+ var hasNoComments = !Number.isFinite(pos) || !annotations || !mediaNode || mediaNode.type !== media || mediaNode.marks.every(function (maybeAnnotation) {
156
+ return maybeAnnotation.type !== annotation || !(maybeAnnotation.attrs.id in annotations) || annotations[maybeAnnotation.attrs.id];
127
157
  });
128
158
  if (!isDrafting && hasNoComments || !mediaNode) {
129
159
  return null;
@@ -44,9 +44,8 @@ var buttonStyle = exports.buttonStyle = function buttonStyle(selected) {
44
44
  return (0, _react.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n\theight: 26px;\n\twidth: 26px;\n\tpadding: 0;\n\tborder-radius: 4px;\n\tbackground-color: ", ";\n\tborder: 1px solid ", ";\n\tcursor: pointer;\n\tdisplay: block;\n"])), selected ? "var(--ds-text, ".concat(_colors.N800, ")") : "var(--ds-background-neutral, ".concat(_colors.N20A, ")"), _uiColor.DEFAULT_BORDER_COLOR);
45
45
  };
46
46
 
47
- /* eslint-disable @atlaskit/design-system/ensure-design-token-usage */
48
47
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
49
- var buttonWrapperStyle = exports.buttonWrapperStyle = (0, _react.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n\tborder: 1px solid transparent;\n\tmargin: ", ";\n\tfont-size: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: ", ";\n\tborder-radius: 6px;\n\t&:focus-within,\n\t&:focus,\n\t&:hover {\n\t\tborder-color: ", " !important;\n\t}\n"])), "var(--ds-space-025, 2px)", "var(--ds-space-025, 2px)", _colors.N50);
48
+ var buttonWrapperStyle = exports.buttonWrapperStyle = (0, _react.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n\tborder: 1px solid transparent;\n\tmargin: ", ";\n\tfont-size: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: ", ";\n\tborder-radius: 6px;\n\t&:focus-within,\n\t&:focus,\n\t&:hover {\n\t\tborder-color: ", " !important;\n\t}\n"])), "var(--ds-space-025, 2px)", "var(--ds-space-025, 2px)", "var(--ds-border, ".concat(_colors.N50, ")"));
50
49
  var line = exports.line = function line(size, selected) {
51
50
  return (0, _react.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n\tposition: relative;\n\t&:before {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\twidth: 12px;\n\t\theight: ", "px;\n\t\tbackground-color: ", ";\n\t\tborder-radius: 90px;\n\t\ttransform: translate(-50%, -50%) rotate(135deg);\n\t}\n"])), size, selected ? "var(--ds-icon-inverse, ".concat(_colors.N0, ")") : "var(--ds-icon, #44546F)");
52
51
  };
@@ -13,6 +13,8 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
13
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
14
  var _react = _interopRequireDefault(require("react"));
15
15
  var _hooks = require("@atlaskit/editor-common/hooks");
16
+ var _useSharedPluginStateSelector = require("@atlaskit/editor-common/use-shared-plugin-state-selector");
17
+ var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
16
18
  var _BrowserWrapper = require("./BrowserWrapper");
17
19
  var _ClipboardWrapper = require("./ClipboardWrapper");
18
20
  var _DropzoneWrapper = require("./DropzoneWrapper");
@@ -26,9 +28,19 @@ var MediaPicker = function MediaPicker(_ref) {
26
28
  mediaState = _ref.mediaState,
27
29
  onBrowseFn = _ref.onBrowseFn,
28
30
  editorDomElement = _ref.editorDomElement;
29
- var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['focus', 'connectivity']),
31
+ var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['focus', 'connectivity'], {
32
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true)
33
+ }),
30
34
  focusState = _useSharedPluginState.focusState,
31
35
  connectivityState = _useSharedPluginState.connectivityState;
36
+ var hasFocusSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'focus.hasFocus', {
37
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
38
+ });
39
+ var connectivityModeSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'connectivity.mode', {
40
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
41
+ });
42
+ var hasFocus = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? hasFocusSelector : focusState === null || focusState === void 0 ? void 0 : focusState.hasFocus;
43
+ var connectivityMode = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? connectivityModeSelector : connectivityState === null || connectivityState === void 0 ? void 0 : connectivityState.mode;
32
44
  var featureFlags = mediaState.mediaOptions && mediaState.mediaOptions.featureFlags;
33
45
 
34
46
  // Ignored via go/ees005
@@ -43,7 +55,7 @@ var MediaPicker = function MediaPicker(_ref) {
43
55
  * as stopImmediatePropagation could cause race condition issues
44
56
  */
45
57
  var container = editorParent;
46
- var clipboard = focusState !== null && focusState !== void 0 && focusState.hasFocus ? /*#__PURE__*/_react.default.createElement(_ClipboardWrapper.ClipboardWrapper, {
58
+ var clipboard = hasFocus ? /*#__PURE__*/_react.default.createElement(_ClipboardWrapper.ClipboardWrapper, {
47
59
  mediaState: mediaState,
48
60
  featureFlags: featureFlags,
49
61
  container: container
@@ -52,7 +64,7 @@ var MediaPicker = function MediaPicker(_ref) {
52
64
  mediaState: mediaState,
53
65
  isActive: !isPopupOpened &&
54
66
  // If we're offline don't show the dropzone
55
- (connectivityState === null || connectivityState === void 0 ? void 0 : connectivityState.mode) !== 'offline',
67
+ connectivityMode !== 'offline',
56
68
  featureFlags: featureFlags,
57
69
  editorDomElement: editorDomElement,
58
70
  appearance: appearance
@@ -29,7 +29,8 @@ var mediaViewerContainerTestID = 'media-viewer-container-test';
29
29
  var MediaViewerContainer = exports.MediaViewerContainer = function MediaViewerContainer(_ref) {
30
30
  var _mediaNode$firstChild;
31
31
  var mediaNode = _ref.mediaNode,
32
- mediaPluginState = _ref.mediaPluginState,
32
+ selectedMediaContainerNode = _ref.selectedMediaContainerNode,
33
+ mediaClientConfig = _ref.mediaClientConfig,
33
34
  _ref$isEditorViewMode = _ref.isEditorViewMode,
34
35
  isEditorViewMode = _ref$isEditorViewMode === void 0 ? false : _ref$isEditorViewMode,
35
36
  _ref$isSelected = _ref.isSelected,
@@ -44,8 +45,7 @@ var MediaViewerContainer = exports.MediaViewerContainer = function MediaViewerCo
44
45
  (0, _react.useEffect)(function () {
45
46
  setShowMediaViewer(isSelected);
46
47
  }, [isSelected]);
47
- var selectedNodeAttrs = (0, _utils.getSelectedNearestMediaContainerNodeAttrs)(mediaPluginState);
48
- var mediaClientConfig = mediaPluginState.mediaClientConfig;
48
+ var selectedNodeAttrs = (0, _utils.getSelectedNearestMediaContainerNodeAttrsFunction)(selectedMediaContainerNode);
49
49
  var showMediaViewer = function showMediaViewer() {
50
50
  setShowMediaViewer(true);
51
51
  };
@@ -21,6 +21,7 @@ var _react2 = require("@emotion/react");
21
21
  var _classnames = _interopRequireDefault(require("classnames"));
22
22
  var _throttle = _interopRequireDefault(require("lodash/throttle"));
23
23
  var _memoizeOne = _interopRequireDefault(require("memoize-one"));
24
+ var _coreUtils = require("@atlaskit/editor-common/core-utils");
24
25
  var _guideline = require("@atlaskit/editor-common/guideline");
25
26
  var _mediaSingle = require("@atlaskit/editor-common/media-single");
26
27
  var _resizer = require("@atlaskit/editor-common/resizer");
@@ -543,7 +544,7 @@ var ResizableMediaSingleNext = /*#__PURE__*/function (_React$Component) {
543
544
  var resizerNextClassName = (0, _classnames.default)(className, _styles.resizerStyles);
544
545
  var isNestedNode = this.isAdjacentMode();
545
546
  var handlePositioning = this.getHandlePositioning();
546
- var maxWidth = this.getMaxWidth();
547
+ var maxWidth = (0, _coreUtils.isSSR)() && size.width && (0, _platformFeatureFlags.fg)('platform_editor_fix_image_size_diff_during_ssr') ? undefined : this.getMaxWidth();
547
548
  var minWidth = this.calcMinWidth(isVideoFile, lineLength);
548
549
 
549
550
  // while is not resizing, we take 100% as min-width if the container width is less than the min-width
@@ -10,10 +10,12 @@ var _reactIntlNext = require("react-intl-next");
10
10
  var _hooks = require("@atlaskit/editor-common/hooks");
11
11
  var _media = require("@atlaskit/editor-common/media");
12
12
  var _uiMenu = require("@atlaskit/editor-common/ui-menu");
13
+ var _useSharedPluginStateSelector = require("@atlaskit/editor-common/use-shared-plugin-state-selector");
13
14
  var _attachmentEditorAttachment = _interopRequireDefault(require("@atlaskit/icon/core/migration/attachment--editor-attachment"));
14
- var onClickMediaButton = function onClickMediaButton(pluginState) {
15
+ var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
16
+ var onClickMediaButton = function onClickMediaButton(showMediaPicker) {
15
17
  return function () {
16
- pluginState.showMediaPicker();
18
+ showMediaPicker();
17
19
  return true;
18
20
  };
19
21
  };
@@ -22,15 +24,25 @@ var ToolbarMedia = function ToolbarMedia(_ref) {
22
24
  isReducedSpacing = _ref.isReducedSpacing,
23
25
  intl = _ref.intl,
24
26
  api = _ref.api;
25
- var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['media']),
27
+ var _useSharedPluginState = (0, _hooks.useSharedPluginState)(api, ['media'], {
28
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true)
29
+ }),
26
30
  mediaState = _useSharedPluginState.mediaState;
27
- if (!(mediaState !== null && mediaState !== void 0 && mediaState.allowsUploads)) {
31
+ var allowsUploadsSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'media.allowsUploads', {
32
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
33
+ });
34
+ var showMediaPickerSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'media.showMediaPicker', {
35
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
36
+ });
37
+ var allowsUploads = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? allowsUploadsSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.allowsUploads;
38
+ var showMediaPicker = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? showMediaPickerSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.showMediaPicker;
39
+ if (!allowsUploads || !showMediaPicker) {
28
40
  return null;
29
41
  }
30
42
  var toolbarMediaTitle = _media.toolbarMediaMessages.toolbarMediaTitle;
31
43
  return /*#__PURE__*/_react.default.createElement(_uiMenu.ToolbarButton, {
32
44
  buttonId: _uiMenu.TOOLBAR_BUTTON.MEDIA,
33
- onClick: onClickMediaButton(mediaState),
45
+ onClick: onClickMediaButton(showMediaPicker),
34
46
  disabled: isDisabled,
35
47
  title: intl.formatMessage(toolbarMediaTitle),
36
48
  spacing: isReducedSpacing ? 'none' : 'default',
@@ -6,11 +6,19 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.useMediaProvider = void 0;
7
7
  var _react = require("react");
8
8
  var _hooks = require("@atlaskit/editor-common/hooks");
9
+ var _useSharedPluginStateSelector = require("@atlaskit/editor-common/use-shared-plugin-state-selector");
10
+ var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
9
11
  var useMediaProvider = exports.useMediaProvider = function useMediaProvider(pluginInjectionApi) {
10
- var _useSharedPluginState = (0, _hooks.useSharedPluginState)(pluginInjectionApi, ['media']),
12
+ var _useSharedPluginState = (0, _hooks.useSharedPluginState)(pluginInjectionApi, ['media'], {
13
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true)
14
+ }),
11
15
  mediaState = _useSharedPluginState.mediaState;
16
+ var mediaProviderSelector = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(pluginInjectionApi, 'media.mediaProvider', {
17
+ disabled: (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', false)
18
+ });
19
+ var mediaProvider = (0, _experiments.editorExperiment)('platform_editor_usesharedpluginstateselector', true) ? mediaProviderSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaProvider;
12
20
  var provider = (0, _react.useMemo)(function () {
13
- return mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaProvider;
14
- }, [mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaProvider]);
21
+ return mediaProvider;
22
+ }, [mediaProvider]);
15
23
  return provider;
16
24
  };
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.updateToFullHeightSeparator = exports.removeMediaGroupNode = exports.isExternalMedia = exports.getSelectedNearestMediaContainerNodeAttrs = exports.getSelectedMediaSingle = exports.getSelectedLayoutIcon = exports.getPixelWidthOfElement = exports.getMaxToolbarWidth = exports.downloadMedia = exports.canShowSwitchButtons = exports.calcNewLayout = void 0;
7
+ exports.updateToFullHeightSeparator = exports.removeMediaGroupNode = exports.isExternalMedia = exports.getSelectedNearestMediaContainerNodeAttrsFunction = exports.getSelectedNearestMediaContainerNodeAttrs = exports.getSelectedMediaSingle = exports.getSelectedLayoutIcon = exports.getPixelWidthOfElement = exports.getMaxToolbarWidth = exports.downloadMedia = exports.canShowSwitchButtons = exports.calcNewLayout = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _memoizeOne = _interopRequireDefault(require("memoize-one"));
@@ -25,9 +25,8 @@ var getSelectedMediaContainerNodeAttrs = function getSelectedMediaContainerNodeA
25
25
  }
26
26
  return null;
27
27
  };
28
- var getSelectedNearestMediaContainerNodeAttrs = exports.getSelectedNearestMediaContainerNodeAttrs = function getSelectedNearestMediaContainerNodeAttrs(mediaPluginState) {
29
- var _mediaPluginState$sel2;
30
- var selectedNode = (_mediaPluginState$sel2 = mediaPluginState.selectedMediaContainerNode) === null || _mediaPluginState$sel2 === void 0 ? void 0 : _mediaPluginState$sel2.call(mediaPluginState);
28
+ var getSelectedNearestMediaContainerNodeAttrsFunction = exports.getSelectedNearestMediaContainerNodeAttrsFunction = function getSelectedNearestMediaContainerNodeAttrsFunction(selectedMediaContainerNode) {
29
+ var selectedNode = selectedMediaContainerNode === null || selectedMediaContainerNode === void 0 ? void 0 : selectedMediaContainerNode();
31
30
  if (selectedNode) {
32
31
  switch (selectedNode.type.name) {
33
32
  case 'mediaSingle':
@@ -41,6 +40,9 @@ var getSelectedNearestMediaContainerNodeAttrs = exports.getSelectedNearestMediaC
41
40
  }
42
41
  return null;
43
42
  };
43
+ var getSelectedNearestMediaContainerNodeAttrs = exports.getSelectedNearestMediaContainerNodeAttrs = function getSelectedNearestMediaContainerNodeAttrs(mediaPluginState) {
44
+ return getSelectedNearestMediaContainerNodeAttrsFunction(mediaPluginState.selectedMediaContainerNode);
45
+ };
44
46
  var downloadMedia = exports.downloadMedia = /*#__PURE__*/function () {
45
47
  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(mediaPluginState, isViewMode) {
46
48
  var selectedNodeAttrs, id, _selectedNodeAttrs$co, collection, mediaClient, fileState, fileName;
@@ -4,6 +4,7 @@ import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
4
4
  import { toolbarInsertBlockMessages as messages } from '@atlaskit/editor-common/messages';
5
5
  import { IconImages } from '@atlaskit/editor-common/quick-insert';
6
6
  import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
7
+ import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector';
7
8
  import { NodeSelection, PluginKey } from '@atlaskit/editor-prosemirror/state';
8
9
  import { getMediaFeatureFlag } from '@atlaskit/media-common';
9
10
  import { fg } from '@atlaskit/platform-feature-flags';
@@ -56,21 +57,35 @@ const MediaViewerFunctionalComponent = ({
56
57
  }) => {
57
58
  const {
58
59
  mediaState
59
- } = useSharedPluginState(api, ['media']);
60
+ } = useSharedPluginState(api, ['media'], {
61
+ disabled: editorExperiment('platform_editor_usesharedpluginstateselector', true)
62
+ });
63
+ const isMediaViewerVisibleSelector = useSharedPluginStateSelector(api, 'media.isMediaViewerVisible', {
64
+ disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
65
+ });
66
+ const mediaViewerSelectedMediaSelector = useSharedPluginStateSelector(api, 'media.mediaViewerSelectedMedia', {
67
+ disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
68
+ });
69
+ const mediaClientConfigSelector = useSharedPluginStateSelector(api, 'media.mediaClientConfig', {
70
+ disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
71
+ });
72
+ const isMediaViewerVisible = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? isMediaViewerVisibleSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.isMediaViewerVisible;
73
+ const mediaViewerSelectedMedia = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? mediaViewerSelectedMediaSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaViewerSelectedMedia;
74
+ const mediaClientConfig = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? mediaClientConfigSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaClientConfig;
60
75
 
61
76
  // Only traverse document once when media viewer is visible, media viewer items will not update
62
77
  // when document changes are made while media viewer is open
63
78
 
64
79
  const mediaItems = useMemo(() => {
65
- if (mediaState !== null && mediaState !== void 0 && mediaState.isMediaViewerVisible) {
80
+ if (isMediaViewerVisible) {
66
81
  const mediaNodes = extractMediaNodes(editorView.state.doc);
67
82
  return createMediaIdentifierArray(mediaNodes);
68
83
  }
69
84
  // eslint-disable-next-line react-hooks/exhaustive-deps -- only update mediaItems once when media viewer is visible
70
- }, [mediaState === null || mediaState === void 0 ? void 0 : mediaState.isMediaViewerVisible]);
85
+ }, [isMediaViewerVisible]);
71
86
 
72
87
  // Viewer does not have required attributes to render the media viewer
73
- if (!(mediaState !== null && mediaState !== void 0 && mediaState.isMediaViewerVisible) || !(mediaState !== null && mediaState !== void 0 && mediaState.mediaViewerSelectedMedia) || !(mediaState !== null && mediaState !== void 0 && mediaState.mediaClientConfig)) {
88
+ if (!isMediaViewerVisible || !mediaViewerSelectedMedia || !mediaClientConfig) {
74
89
  return null;
75
90
  }
76
91
  const handleOnClose = () => {
@@ -78,9 +93,9 @@ const MediaViewerFunctionalComponent = ({
78
93
  api === null || api === void 0 ? void 0 : api.core.actions.execute(api === null || api === void 0 ? void 0 : api.media.commands.hideMediaViewer);
79
94
  };
80
95
  return /*#__PURE__*/React.createElement(RenderMediaViewer, {
81
- mediaClientConfig: mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaClientConfig,
96
+ mediaClientConfig: mediaClientConfig,
82
97
  onClose: handleOnClose,
83
- selectedNodeAttrs: mediaState.mediaViewerSelectedMedia,
98
+ selectedNodeAttrs: mediaViewerSelectedMedia,
84
99
  items: mediaItems
85
100
  });
86
101
  };
@@ -5,6 +5,7 @@ import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
5
5
  import { nodeViewsMessages as messages } from '@atlaskit/editor-common/media';
6
6
  import { WithProviders } from '@atlaskit/editor-common/provider-factory';
7
7
  import ReactNodeView from '@atlaskit/editor-common/react-node-view';
8
+ import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector';
8
9
  import { isNodeSelectedOrInRange, SelectedState, setNodeSelection } from '@atlaskit/editor-common/utils';
9
10
  import EditorCloseIcon from '@atlaskit/icon/core/migration/close--editor-close';
10
11
  import { getMediaFeatureFlag } from '@atlaskit/media-common';
@@ -265,11 +266,23 @@ function MediaGroupNodeViewInternal({
265
266
  const {
266
267
  editorDisabledState: editorDisabledPlugin,
267
268
  editorViewModeState: editorViewModePlugin
268
- } = useSharedPluginState(pluginInjectionApi, ['editorDisabled', 'editorViewMode']);
269
+ } = useSharedPluginState(pluginInjectionApi, ['editorDisabled', 'editorViewMode'], {
270
+ disabled: editorExperiment('platform_editor_usesharedpluginstateselector', true)
271
+ });
272
+ const editorDisabledSelector = useSharedPluginStateSelector(pluginInjectionApi, 'editorDisabled.editorDisabled', {
273
+ disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
274
+ });
275
+ const editorViewModeSelector = useSharedPluginStateSelector(pluginInjectionApi, 'editorViewMode.mode', {
276
+ disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
277
+ });
278
+ const editorDisabled = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? editorDisabledSelector : editorDisabledPlugin === null || editorDisabledPlugin === void 0 ? void 0 : editorDisabledPlugin.editorDisabled;
279
+ const editorViewMode = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? editorViewModeSelector : editorViewModePlugin === null || editorViewModePlugin === void 0 ? void 0 : editorViewModePlugin.mode;
269
280
  const mediaProvider = useMediaProvider(pluginInjectionApi);
270
281
  return renderFn({
271
282
  editorDisabledPlugin,
272
283
  editorViewModePlugin,
284
+ editorDisabled,
285
+ editorViewMode,
273
286
  mediaProvider
274
287
  });
275
288
  }
@@ -290,7 +303,9 @@ class MediaGroupNodeView extends ReactNodeView {
290
303
  const renderFn = ({
291
304
  editorDisabledPlugin,
292
305
  editorViewModePlugin,
293
- mediaProvider: mediaProviderFromState
306
+ mediaProvider: mediaProviderFromState,
307
+ editorDisabled,
308
+ editorViewMode
294
309
  }) => {
295
310
  const mediaProvider = mediaProviderFromState ? Promise.resolve(mediaProviderFromState) : undefined;
296
311
  if (!mediaProvider) {
@@ -302,7 +317,7 @@ class MediaGroupNodeView extends ReactNodeView {
302
317
  getPos: getPos,
303
318
  view: this.view,
304
319
  forwardRef: forwardRef,
305
- disabled: (editorDisabledPlugin || {}).editorDisabled,
320
+ disabled: editorDisabled,
306
321
  allowLazyLoading: mediaOptions.allowLazyLoading,
307
322
  mediaProvider: mediaProvider,
308
323
  contextIdentifierProvider: contextIdentifierProvider,
@@ -310,7 +325,7 @@ class MediaGroupNodeView extends ReactNodeView {
310
325
  anchorPos: this.view.state.selection.$anchor.pos,
311
326
  headPos: this.view.state.selection.$head.pos,
312
327
  mediaOptions: mediaOptions,
313
- editorViewMode: (editorViewModePlugin === null || editorViewModePlugin === void 0 ? void 0 : editorViewModePlugin.mode) === 'view'
328
+ editorViewMode: editorViewMode === 'view'
314
329
  });
315
330
  }
316
331
  return /*#__PURE__*/React.createElement(IntlMediaGroup, {
@@ -318,7 +333,7 @@ class MediaGroupNodeView extends ReactNodeView {
318
333
  getPos: getPos,
319
334
  view: this.view,
320
335
  forwardRef: forwardRef,
321
- disabled: (editorDisabledPlugin || {}).editorDisabled,
336
+ disabled: editorExperiment('platform_editor_usesharedpluginstateselector', true) ? editorDisabled : (editorDisabledPlugin || {}).editorDisabled,
322
337
  allowLazyLoading: mediaOptions.allowLazyLoading,
323
338
  mediaProvider: mediaProvider,
324
339
  contextIdentifierProvider: contextIdentifierProvider,
@@ -326,7 +341,7 @@ class MediaGroupNodeView extends ReactNodeView {
326
341
  anchorPos: this.view.state.selection.$anchor.pos,
327
342
  headPos: this.view.state.selection.$head.pos,
328
343
  mediaOptions: mediaOptions,
329
- editorViewMode: (editorViewModePlugin === null || editorViewModePlugin === void 0 ? void 0 : editorViewModePlugin.mode) === 'view'
344
+ editorViewMode: editorExperiment('platform_editor_usesharedpluginstateselector', true) ? editorViewMode === 'view' : (editorViewModePlugin === null || editorViewModePlugin === void 0 ? void 0 : editorViewModePlugin.mode) === 'view'
330
345
  });
331
346
  };
332
347
  return /*#__PURE__*/React.createElement(MediaGroupNodeViewInternal, {