@atlaskit/editor-plugin-media-insert 3.1.1 → 3.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @atlaskit/editor-plugin-media-insert
2
2
 
3
+ ## 3.1.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`83ae273817f38`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/83ae273817f38) -
8
+ ED-24999 Convert External Image Upload form to use components from @atlaskit/form
9
+ - Updated dependencies
10
+
11
+ ## 3.1.2
12
+
13
+ ### Patch Changes
14
+
15
+ - [#147461](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/147461)
16
+ [`acef010cdb706`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/acef010cdb706) -
17
+ [ux] [ED-25164] Pass mounting point to media insert plugin for correct toolbar popup positioning
18
+ - [#147206](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/147206)
19
+ [`c3f82dfdeaf62`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/c3f82dfdeaf62) -
20
+ [ED-25157] Make sure document inserted for media from the media insert plugin has the correct
21
+ attributes (insertMediaVia)
22
+
3
23
  ## 3.1.1
4
24
 
5
25
  ### Patch Changes
@@ -11,20 +11,20 @@ var ACTION_CLOSE_POPUP = exports.ACTION_CLOSE_POPUP = 'CLOSE_POPUP';
11
11
  var setPopupMeta = function setPopupMeta(_ref) {
12
12
  var type = _ref.type,
13
13
  tr = _ref.tr,
14
- target = _ref.target;
14
+ mountInfo = _ref.mountInfo;
15
15
  return tr.setMeta(_pluginKey.pluginKey, {
16
16
  type: type,
17
- target: target
17
+ mountInfo: mountInfo
18
18
  });
19
19
  };
20
- var showMediaInsertPopup = exports.showMediaInsertPopup = function showMediaInsertPopup(tr, target) {
20
+ var showMediaInsertPopup = exports.showMediaInsertPopup = function showMediaInsertPopup(tr, mountInfo) {
21
21
  // Log exposure here but don't actually switch anything on it
22
22
  (0, _experiments.editorExperiment)('add-media-from-url', true, {
23
23
  exposure: true
24
24
  });
25
25
  return setPopupMeta({
26
26
  type: ACTION_OPEN_POPUP,
27
- target: target,
27
+ mountInfo: mountInfo,
28
28
  tr: tr
29
29
  });
30
30
  };
@@ -36,17 +36,17 @@ var mediaInsertPlugin = exports.mediaInsertPlugin = function mediaInsertPlugin(_
36
36
  }
37
37
  var _ref2 = _pluginKey.pluginKey.getState(editorState) || {},
38
38
  isOpen = _ref2.isOpen,
39
- target = _ref2.target;
39
+ mountInfo = _ref2.mountInfo;
40
40
  return {
41
41
  isOpen: isOpen,
42
- target: target
42
+ mountInfo: mountInfo
43
43
  };
44
44
  },
45
45
  commands: {
46
- showMediaInsertPopup: function showMediaInsertPopup(target) {
46
+ showMediaInsertPopup: function showMediaInsertPopup(mountInfo) {
47
47
  return function (_ref3) {
48
48
  var tr = _ref3.tr;
49
- return (0, _actions.showMediaInsertPopup)(tr, target);
49
+ return (0, _actions.showMediaInsertPopup)(tr, mountInfo);
50
50
  };
51
51
  }
52
52
  },
@@ -59,8 +59,7 @@ var mediaInsertPlugin = exports.mediaInsertPlugin = function mediaInsertPlugin(_
59
59
  var insertMediaSingle = function insertMediaSingle(_ref5) {
60
60
  var _api$media$actions$in;
61
61
  var mediaState = _ref5.mediaState,
62
- inputMethod = _ref5.inputMethod,
63
- insertMediaVia = _ref5.insertMediaVia;
62
+ inputMethod = _ref5.inputMethod;
64
63
  var id = mediaState.id,
65
64
  dimensions = mediaState.dimensions,
66
65
  contextId = mediaState.contextId,
@@ -85,7 +84,7 @@ var mediaInsertPlugin = exports.mediaInsertPlugin = function mediaInsertPlugin(_
85
84
  alt: fileName,
86
85
  __fileMimeType: mediaState.fileMimeType
87
86
  });
88
- return (_api$media$actions$in = api === null || api === void 0 ? void 0 : api.media.actions.insertMediaAsMediaSingle(editorView, node, inputMethod, isNestingInQuoteSupported, insertMediaVia)) !== null && _api$media$actions$in !== void 0 ? _api$media$actions$in : false;
87
+ return (_api$media$actions$in = api === null || api === void 0 ? void 0 : api.media.actions.insertMediaAsMediaSingle(editorView, node, inputMethod, isNestingInQuoteSupported, _analytics.INSERT_MEDIA_VIA.EXTERNAL_UPLOAD)) !== null && _api$media$actions$in !== void 0 ? _api$media$actions$in : false;
89
88
  };
90
89
  var insertExternalMediaSingle = function insertExternalMediaSingle(_ref7) {
91
90
  var _api$media$actions$in2;
@@ -13,7 +13,7 @@ var createPlugin = exports.createPlugin = function createPlugin() {
13
13
  init: function init() {
14
14
  return {
15
15
  isOpen: false,
16
- target: undefined
16
+ mountInfo: undefined
17
17
  };
18
18
  },
19
19
  apply: function apply(tr, mediaInsertPluginState) {
@@ -22,7 +22,7 @@ var createPlugin = exports.createPlugin = function createPlugin() {
22
22
  case _actions.ACTION_OPEN_POPUP:
23
23
  return {
24
24
  isOpen: true,
25
- target: meta.target
25
+ mountInfo: meta.mountInfo
26
26
  };
27
27
  case _actions.ACTION_CLOSE_POPUP:
28
28
  return {
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.MediaFromURL = MediaFromURL;
8
9
  exports.isValidUrl = void 0;
9
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
12
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
13
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -18,7 +20,7 @@ var _buttonGroup = _interopRequireDefault(require("@atlaskit/button/button-group
18
20
  var _new = _interopRequireDefault(require("@atlaskit/button/new"));
19
21
  var _analytics = require("@atlaskit/editor-common/analytics");
20
22
  var _messages = require("@atlaskit/editor-common/messages");
21
- var _form = require("@atlaskit/form");
23
+ var _form = _interopRequireWildcard(require("@atlaskit/form"));
22
24
  var _filePreview = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/file-preview"));
23
25
  var _mediaClientReact = require("@atlaskit/media-client-react");
24
26
  var _primitives = require("@atlaskit/primitives");
@@ -26,6 +28,9 @@ var _sectionMessage = _interopRequireDefault(require("@atlaskit/section-message"
26
28
  var _textfield = _interopRequireDefault(require("@atlaskit/textfield"));
27
29
  var _MediaCard = require("./MediaCard");
28
30
  var _useAnalyticsEvents2 = require("./useAnalyticsEvents");
31
+ var _excluded = ["value", "onChange"];
32
+ 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); }
33
+ 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; }
29
34
  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; }
30
35
  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; }
31
36
  var PreviewBoxStyles = (0, _primitives.xcss)({
@@ -38,9 +43,6 @@ var PreviewBoxStyles = (0, _primitives.xcss)({
38
43
  var PreviewImageStyles = (0, _primitives.xcss)({
39
44
  height: '200px'
40
45
  });
41
- var ButtonGroupStyles = (0, _primitives.xcss)({
42
- alignSelf: 'end'
43
- });
44
46
  var FormStyles = (0, _primitives.xcss)({
45
47
  flexGrow: 1
46
48
  });
@@ -103,22 +105,10 @@ function MediaFromURL(_ref) {
103
105
  warning: intl.formatMessage(_messages.mediaInsertMessages.fromUrlWarning),
104
106
  invalidUrl: intl.formatMessage(_messages.mediaInsertMessages.invalidUrlErrorMessage)
105
107
  };
106
- var _React$useState = _react.default.useState(''),
107
- _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
108
- inputUrl = _React$useState2[0],
109
- setUrl = _React$useState2[1];
110
- var _React$useState3 = _react.default.useState(),
111
- _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
112
- hasUrlError = _React$useState4[0],
113
- setHasUrlError = _React$useState4[1];
114
108
  var _React$useReducer = _react.default.useReducer(previewStateReducer, INITIAL_PREVIEW_STATE),
115
109
  _React$useReducer2 = (0, _slicedToArray2.default)(_React$useReducer, 2),
116
110
  previewState = _React$useReducer2[0],
117
111
  dispatch = _React$useReducer2[1];
118
- var _React$useState5 = _react.default.useState(false),
119
- _React$useState6 = (0, _slicedToArray2.default)(_React$useState5, 2),
120
- isInputFocused = _React$useState6[0],
121
- setInputFocused = _React$useState6[1];
122
112
  var pasteFlag = _react.default.useRef(false);
123
113
  var _useAnalyticsEvents = (0, _useAnalyticsEvents2.useAnalyticsEvents)(dispatchAnalyticsEvent),
124
114
  onUploadButtonClickedAnalytics = _useAnalyticsEvents.onUploadButtonClickedAnalytics,
@@ -178,7 +168,7 @@ function MediaFromURL(_ref) {
178
168
  dispatch({
179
169
  type: 'warning',
180
170
  warning: _context.t0,
181
- url: inputUrl
171
+ url: url
182
172
  });
183
173
  } else if (_context.t0 instanceof Error) {
184
174
  message = 'Image preview fetch failed';
@@ -203,39 +193,21 @@ function MediaFromURL(_ref) {
203
193
  return function (_x) {
204
194
  return _ref2.apply(this, arguments);
205
195
  };
206
- }(), [onUploadButtonClickedAnalytics, mediaProvider, onUploadCommencedAnalytics, onUploadSuccessAnalytics, onUploadFailureAnalytics, inputUrl]);
207
- var errorAttributes = {};
208
- if (!isInputFocused) {
209
- errorAttributes['aria-relevant'] = 'all';
210
- errorAttributes['aria-atomic'] = 'false';
211
- }
212
- var onBlur = _react.default.useCallback(function () {
213
- if (!isValidUrl(inputUrl)) {
214
- setHasUrlError(true);
215
- }
216
- setInputFocused(false);
217
- }, [inputUrl]);
218
- var onFocus = _react.default.useCallback(function () {
219
- setInputFocused(true);
220
- }, []);
196
+ }(), [onUploadButtonClickedAnalytics, mediaProvider, onUploadCommencedAnalytics, onUploadSuccessAnalytics, onUploadFailureAnalytics]);
221
197
  var onURLChange = _react.default.useCallback(function (e) {
222
- var url = e.target.value;
223
- setUrl(url);
198
+ var url = e.currentTarget.value;
224
199
  dispatch({
225
200
  type: 'reset'
226
201
  });
227
202
  if (!isValidUrl(url)) {
228
- setHasUrlError(true);
229
203
  return;
230
- } else {
231
- setHasUrlError(false);
232
204
  }
233
- if (pasteFlag.current === true) {
205
+ if (pasteFlag.current) {
234
206
  pasteFlag.current = false;
235
207
  uploadExternalMedia(url);
236
208
  }
237
209
  }, [uploadExternalMedia]);
238
- var onPaste = _react.default.useCallback(function (e) {
210
+ var _onPaste = _react.default.useCallback(function (e, inputUrl) {
239
211
  // Note: this is a little weird, but the paste event will always be
240
212
  // fired before the change event when pasting. We don't really want to
241
213
  // duplicate logic by handling pastes separately to changes, so we're
@@ -245,13 +217,12 @@ function MediaFromURL(_ref) {
245
217
  if (e.clipboardData.getData('text') !== inputUrl) {
246
218
  pasteFlag.current = true;
247
219
  }
248
- }, [inputUrl]);
220
+ }, []);
249
221
  var onInsert = _react.default.useCallback(function () {
250
222
  if (previewState.previewInfo) {
251
223
  insertMediaSingle({
252
224
  mediaState: previewState.previewInfo,
253
- inputMethod: _analytics.INPUT_METHOD.MEDIA_PICKER,
254
- insertMediaVia: _analytics.INSERT_MEDIA_VIA.EXTERNAL_UPLOAD
225
+ inputMethod: _analytics.INPUT_METHOD.MEDIA_PICKER
255
226
  });
256
227
  }
257
228
  closeMediaInsertPicker();
@@ -266,14 +237,6 @@ function MediaFromURL(_ref) {
266
237
  }
267
238
  closeMediaInsertPicker();
268
239
  }, [closeMediaInsertPicker, insertExternalMediaSingle, previewState.warning]);
269
- var onInsertClick = _react.default.useCallback(function () {
270
- if (previewState.previewInfo) {
271
- return onInsert();
272
- }
273
- if (previewState.warning) {
274
- return onExternalInsert(inputUrl);
275
- }
276
- }, [previewState.previewInfo, previewState.warning, onInsert, onExternalInsert, inputUrl]);
277
240
  var onInputKeyPress = _react.default.useCallback(function (event) {
278
241
  if (event && event.key === 'Esc') {
279
242
  if (dispatchAnalyticsEvent) {
@@ -303,14 +266,13 @@ function MediaFromURL(_ref) {
303
266
  }
304
267
  closeMediaInsertPicker();
305
268
  }, [closeMediaInsertPicker, dispatchAnalyticsEvent]);
306
- return /*#__PURE__*/_react.default.createElement(_primitives.Box, {
307
- as: "form",
308
- onSubmit: function onSubmit(e) {
309
- e.preventDefault();
269
+ return /*#__PURE__*/_react.default.createElement(_form.default, {
270
+ onSubmit: function onSubmit(_ref3, form) {
271
+ var inputUrl = _ref3.inputUrl;
310
272
  // This can be triggered from an enter key event on the input even when
311
273
  // the button is disabled, so we explicitly do nothing when in loading
312
274
  // state.
313
- if (previewState.isLoading || hasUrlError) {
275
+ if (previewState.isLoading || form.getState().invalid) {
314
276
  return;
315
277
  }
316
278
  if (previewState.previewInfo) {
@@ -320,52 +282,79 @@ function MediaFromURL(_ref) {
320
282
  return onExternalInsert(inputUrl);
321
283
  }
322
284
  return uploadExternalMedia(inputUrl);
323
- },
324
- xcss: FormStyles
325
- }, /*#__PURE__*/_react.default.createElement(_primitives.Stack, {
326
- space: "space.150",
327
- grow: "fill"
328
- }, /*#__PURE__*/_react.default.createElement(_textfield.default, {
329
- value: inputUrl,
330
- placeholder: strings.pasteLinkToUpload,
331
- isInvalid: hasUrlError,
332
- maxLength: MAX_URL_LENGTH,
333
- onChange: onURLChange,
334
- onKeyPress: onInputKeyPress,
335
- onPaste: onPaste,
336
- onBlur: onBlur,
337
- onFocus: onFocus
338
- }), hasUrlError && /*#__PURE__*/_react.default.createElement(_form.ErrorMessage, null, /*#__PURE__*/_react.default.createElement(_primitives.Box, (0, _extends2.default)({
339
- as: "span"
340
- }, errorAttributes), strings.invalidUrl)), previewState.previewInfo && /*#__PURE__*/_react.default.createElement(_primitives.Inline, {
341
- alignInline: "center",
342
- alignBlock: "center",
343
- xcss: PreviewImageStyles,
344
- space: "space.200"
345
- }, /*#__PURE__*/_react.default.createElement(_MediaCard.MediaCard, {
346
- attrs: previewState.previewInfo,
347
- mediaProvider: mediaProvider
348
- })), previewState.error && /*#__PURE__*/_react.default.createElement(_sectionMessage.default, {
349
- appearance: "error"
350
- }, strings.errorMessage), previewState.warning && /*#__PURE__*/_react.default.createElement(_sectionMessage.default, {
351
- appearance: "warning"
352
- }, strings.warning), !previewState.previewInfo && !previewState.error && !previewState.warning && /*#__PURE__*/_react.default.createElement(_primitives.Flex, {
353
- xcss: PreviewBoxStyles,
354
- alignItems: "center",
355
- justifyContent: "center"
356
- }, /*#__PURE__*/_react.default.createElement(_new.default, {
357
- type: "submit",
358
- isLoading: previewState.isLoading,
359
- isDisabled: inputUrl.length === 0 || hasUrlError,
360
- iconBefore: _filePreview.default
361
- }, strings.loadPreview)), /*#__PURE__*/_react.default.createElement(_primitives.Box, {
362
- xcss: ButtonGroupStyles
363
- }, /*#__PURE__*/_react.default.createElement(_buttonGroup.default, null, /*#__PURE__*/_react.default.createElement(_new.default, {
364
- appearance: "subtle",
365
- onClick: onCancel
366
- }, strings.cancel), /*#__PURE__*/_react.default.createElement(_new.default, {
367
- appearance: "primary",
368
- isDisabled: !previewState.previewInfo && !previewState.warning,
369
- onClick: onInsertClick
370
- }, strings.insert)))));
285
+ }
286
+ }, function (_ref4) {
287
+ var formProps = _ref4.formProps;
288
+ return /*#__PURE__*/_react.default.createElement(_primitives.Box, (0, _extends2.default)({
289
+ as: "form"
290
+ }, formProps, {
291
+ xcss: FormStyles
292
+ }), /*#__PURE__*/_react.default.createElement(_primitives.Stack, {
293
+ space: "space.150",
294
+ grow: "fill"
295
+ }, /*#__PURE__*/_react.default.createElement(_form.Field, {
296
+ "aria-required": true,
297
+ isRequired: true,
298
+ name: "inputUrl",
299
+ validate: function validate(value) {
300
+ return value && isValidUrl(value) ? undefined : strings.invalidUrl;
301
+ }
302
+ }, function (_ref5) {
303
+ var _ref5$fieldProps = _ref5.fieldProps,
304
+ value = _ref5$fieldProps.value,
305
+ _onChange = _ref5$fieldProps.onChange,
306
+ rest = (0, _objectWithoutProperties2.default)(_ref5$fieldProps, _excluded),
307
+ error = _ref5.error,
308
+ meta = _ref5.meta;
309
+ return /*#__PURE__*/_react.default.createElement(_primitives.Stack, {
310
+ space: "space.150",
311
+ grow: "fill"
312
+ }, /*#__PURE__*/_react.default.createElement(_primitives.Box, null, /*#__PURE__*/_react.default.createElement(_textfield.default, (0, _extends2.default)({}, rest, {
313
+ value: value,
314
+ placeholder: strings.pasteLinkToUpload,
315
+ maxLength: MAX_URL_LENGTH,
316
+ onKeyPress: onInputKeyPress,
317
+ onPaste: function onPaste(event) {
318
+ return _onPaste(event, value);
319
+ },
320
+ onChange: function onChange(value) {
321
+ onURLChange(value);
322
+ _onChange(value);
323
+ }
324
+ })), error && /*#__PURE__*/_react.default.createElement(_form.ErrorMessage, null, /*#__PURE__*/_react.default.createElement(_primitives.Box, (0, _extends2.default)({
325
+ as: "span"
326
+ }, meta.touched || meta.dirty ? {
327
+ 'aria-relevant': 'all',
328
+ 'aria-atomic': 'false'
329
+ } : {}), error))), !previewState.previewInfo && !previewState.error && !previewState.warning && /*#__PURE__*/_react.default.createElement(_primitives.Flex, {
330
+ xcss: PreviewBoxStyles,
331
+ alignItems: "center",
332
+ justifyContent: "center"
333
+ }, /*#__PURE__*/_react.default.createElement(_new.default, {
334
+ type: "submit",
335
+ isLoading: previewState.isLoading,
336
+ isDisabled: !!error || !meta.dirty,
337
+ iconBefore: _filePreview.default
338
+ }, strings.loadPreview)));
339
+ }), previewState.previewInfo && /*#__PURE__*/_react.default.createElement(_primitives.Inline, {
340
+ alignInline: "center",
341
+ alignBlock: "center",
342
+ xcss: PreviewImageStyles,
343
+ space: "space.200"
344
+ }, /*#__PURE__*/_react.default.createElement(_MediaCard.MediaCard, {
345
+ attrs: previewState.previewInfo,
346
+ mediaProvider: mediaProvider
347
+ })), previewState.error && /*#__PURE__*/_react.default.createElement(_sectionMessage.default, {
348
+ appearance: "error"
349
+ }, strings.errorMessage), previewState.warning && /*#__PURE__*/_react.default.createElement(_sectionMessage.default, {
350
+ appearance: "warning"
351
+ }, strings.warning), /*#__PURE__*/_react.default.createElement(_form.FormFooter, null, /*#__PURE__*/_react.default.createElement(_buttonGroup.default, null, /*#__PURE__*/_react.default.createElement(_new.default, {
352
+ appearance: "subtle",
353
+ onClick: onCancel
354
+ }, strings.cancel), /*#__PURE__*/_react.default.createElement(_new.default, {
355
+ type: "submit",
356
+ appearance: "primary",
357
+ isDisabled: !previewState.previewInfo && !previewState.warning
358
+ }, strings.insert)))));
359
+ });
371
360
  }
@@ -81,10 +81,18 @@ var MediaInsertPicker = exports.MediaInsertPicker = function MediaInsertPicker(_
81
81
  insertExternalMediaSingle = _ref2.insertExternalMediaSingle,
82
82
  insertFile = _ref2.insertFile;
83
83
  var _ref3 = (_useSharedPluginState = (_useSharedPluginState2 = (0, _hooks.useSharedPluginState)(api, ['mediaInsert'])) === null || _useSharedPluginState2 === void 0 ? void 0 : _useSharedPluginState2.mediaInsertState) !== null && _useSharedPluginState !== void 0 ? _useSharedPluginState : {},
84
- isOpen = _ref3.isOpen;
85
-
86
- // If targetRef is undefined, target the selection in the editor
87
- var targetRef = getDomRefFromSelection(editorView, dispatchAnalyticsEvent);
84
+ isOpen = _ref3.isOpen,
85
+ mountInfo = _ref3.mountInfo;
86
+ var targetRef;
87
+ var mountPoint;
88
+ if (mountInfo) {
89
+ targetRef = mountInfo.ref;
90
+ mountPoint = mountInfo.mountPoint;
91
+ } else {
92
+ // If targetRef is undefined, target the selection in the editor
93
+ targetRef = getDomRefFromSelection(editorView, dispatchAnalyticsEvent);
94
+ mountPoint = popupsMountPoint;
95
+ }
88
96
  var mediaProvider = (_useSharedPluginState3 = (0, _hooks.useSharedPluginState)(api, ['media'])) === null || _useSharedPluginState3 === void 0 || (_useSharedPluginState3 = _useSharedPluginState3.mediaState) === null || _useSharedPluginState3 === void 0 ? void 0 : _useSharedPluginState3.mediaProvider;
89
97
  var intl = (0, _reactIntlNext.useIntl)();
90
98
  var focusEditor = (0, _useFocusEditor.useFocusEditor)({
@@ -122,7 +130,7 @@ var MediaInsertPicker = exports.MediaInsertPicker = function MediaInsertPicker(_
122
130
  zIndex: _editorSharedStyles.akEditorFloatingDialogZIndex,
123
131
  fitHeight: 390,
124
132
  fitWidth: 340,
125
- mountTo: popupsMountPoint,
133
+ mountTo: mountPoint,
126
134
  boundariesElement: popupsBoundariesElement,
127
135
  handleClickOutside: handleClose(_analytics.INPUT_METHOD.MOUSE),
128
136
  handleEscapeKeydown: handleClose(_analytics.INPUT_METHOD.KEYBOARD),
@@ -5,19 +5,19 @@ export const ACTION_CLOSE_POPUP = 'CLOSE_POPUP';
5
5
  const setPopupMeta = ({
6
6
  type,
7
7
  tr,
8
- target
8
+ mountInfo
9
9
  }) => tr.setMeta(pluginKey, {
10
10
  type,
11
- target
11
+ mountInfo
12
12
  });
13
- export const showMediaInsertPopup = (tr, target) => {
13
+ export const showMediaInsertPopup = (tr, mountInfo) => {
14
14
  // Log exposure here but don't actually switch anything on it
15
15
  editorExperiment('add-media-from-url', true, {
16
16
  exposure: true
17
17
  });
18
18
  return setPopupMeta({
19
19
  type: ACTION_OPEN_POPUP,
20
- target,
20
+ mountInfo,
21
21
  tr
22
22
  });
23
23
  };
@@ -28,17 +28,17 @@ export const mediaInsertPlugin = ({
28
28
  }
29
29
  const {
30
30
  isOpen,
31
- target
31
+ mountInfo
32
32
  } = pluginKey.getState(editorState) || {};
33
33
  return {
34
34
  isOpen,
35
- target
35
+ mountInfo
36
36
  };
37
37
  },
38
38
  commands: {
39
- showMediaInsertPopup: target => ({
39
+ showMediaInsertPopup: mountInfo => ({
40
40
  tr
41
- }) => showMediaInsertPopup(tr, target)
41
+ }) => showMediaInsertPopup(tr, mountInfo)
42
42
  },
43
43
  contentComponent: ({
44
44
  editorView,
@@ -49,8 +49,7 @@ export const mediaInsertPlugin = ({
49
49
  }) => {
50
50
  const insertMediaSingle = ({
51
51
  mediaState,
52
- inputMethod,
53
- insertMediaVia
52
+ inputMethod
54
53
  }) => {
55
54
  var _api$media$actions$in;
56
55
  const {
@@ -79,7 +78,7 @@ export const mediaInsertPlugin = ({
79
78
  alt: fileName,
80
79
  __fileMimeType: mediaState.fileMimeType
81
80
  });
82
- return (_api$media$actions$in = api === null || api === void 0 ? void 0 : api.media.actions.insertMediaAsMediaSingle(editorView, node, inputMethod, isNestingInQuoteSupported, insertMediaVia)) !== null && _api$media$actions$in !== void 0 ? _api$media$actions$in : false;
81
+ return (_api$media$actions$in = api === null || api === void 0 ? void 0 : api.media.actions.insertMediaAsMediaSingle(editorView, node, inputMethod, isNestingInQuoteSupported, INSERT_MEDIA_VIA.EXTERNAL_UPLOAD)) !== null && _api$media$actions$in !== void 0 ? _api$media$actions$in : false;
83
82
  };
84
83
  const insertExternalMediaSingle = ({
85
84
  url,
@@ -7,7 +7,7 @@ export const createPlugin = () => {
7
7
  init() {
8
8
  return {
9
9
  isOpen: false,
10
- target: undefined
10
+ mountInfo: undefined
11
11
  };
12
12
  },
13
13
  apply(tr, mediaInsertPluginState) {
@@ -16,7 +16,7 @@ export const createPlugin = () => {
16
16
  case ACTION_OPEN_POPUP:
17
17
  return {
18
18
  isOpen: true,
19
- target: meta.target
19
+ mountInfo: meta.mountInfo
20
20
  };
21
21
  case ACTION_CLOSE_POPUP:
22
22
  return {