@atlaskit/editor-plugin-media 12.0.0 → 12.1.0

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,19 @@
1
1
  # @atlaskit/editor-plugin-media
2
2
 
3
+ ## 12.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`b6bb07e5d72ac`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/b6bb07e5d72ac) -
8
+ [ux] Fix for #hot-301450, add new media option for fallback media name fetcher to allow confluence
9
+ to use the attachment service instead of the media service to get filenames. After DC -> Cloud
10
+ migration filenames were not properly copied across to the media service causing inline media to
11
+ show an error.
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies
16
+
3
17
  ## 12.0.0
4
18
 
5
19
  ### Major Changes
@@ -242,7 +242,7 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref3) {
242
242
  mediaGroup: (0, _lazyMediaGroup.lazyMediaGroupView)(portalProviderAPI, eventDispatcher, providerFactory, options, api),
243
243
  mediaSingle: (0, _mediaSingle.ReactMediaSingleNode)(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent, options),
244
244
  media: (0, _mediaNodeView.ReactMediaNode)(portalProviderAPI, eventDispatcher, providerFactory, options, api),
245
- mediaInline: (0, _lazyMediaInline.lazyMediaInlineView)(portalProviderAPI, eventDispatcher, providerFactory, api)
245
+ mediaInline: (0, _lazyMediaInline.lazyMediaInlineView)(portalProviderAPI, eventDispatcher, providerFactory, api, undefined, options === null || options === void 0 ? void 0 : options.fallbackMediaNameFetcher)
246
246
  },
247
247
  errorReporter: errorReporter,
248
248
  uploadErrorHandler: options && options.uploadErrorHandler,
@@ -8,7 +8,7 @@ exports.lazyMediaInlineView = void 0;
8
8
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
9
  var _lazyNodeView = require("@atlaskit/editor-common/lazy-node-view");
10
10
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != (0, _typeof2.default)(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
11
- var lazyMediaInlineView = exports.lazyMediaInlineView = function lazyMediaInlineView(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent) {
11
+ var lazyMediaInlineView = exports.lazyMediaInlineView = function lazyMediaInlineView(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent, fallbackMediaNameFetcher) {
12
12
  return (0, _lazyNodeView.withLazyLoading)({
13
13
  nodeName: 'mediaInline',
14
14
  getNodeViewOptions: function getNodeViewOptions() {},
@@ -19,7 +19,7 @@ var lazyMediaInlineView = exports.lazyMediaInlineView = function lazyMediaInline
19
19
  }).then(function (_ref) {
20
20
  var ReactMediaInlineNode = _ref.ReactMediaInlineNode;
21
21
  return function (node, view, getPos) {
22
- return ReactMediaInlineNode(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent)(node, view, getPos);
22
+ return ReactMediaInlineNode(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent, fallbackMediaNameFetcher)(node, view, getPos);
23
23
  };
24
24
  });
25
25
  return result;
@@ -220,7 +220,8 @@ var MediaInline = exports.MediaInline = function MediaInline(props) {
220
220
  }, (0, _react2.jsx)(_mediaCard.MediaInlineCard, {
221
221
  isSelected: props.isSelected,
222
222
  identifier: identifier,
223
- mediaClientConfig: viewMediaClientConfig
223
+ mediaClientConfig: viewMediaClientConfig,
224
+ fallbackMediaNameFetcher: props.fallbackMediaNameFetcher
224
225
  }));
225
226
  };
226
227
  var selector = function selector(states) {
@@ -243,7 +244,8 @@ var MediaInlineSharedState = function MediaInlineSharedState(_ref3) {
243
244
  getPos = _ref3.getPos,
244
245
  contextIdentifierProvider = _ref3.contextIdentifierProvider,
245
246
  api = _ref3.api,
246
- view = _ref3.view;
247
+ view = _ref3.view,
248
+ fallbackMediaNameFetcher = _ref3.fallbackMediaNameFetcher;
247
249
  var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['editorViewMode', 'media'], selector),
248
250
  mediaProvider = _useSharedPluginState.mediaProvider,
249
251
  allowInlineImages = _useSharedPluginState.allowInlineImages,
@@ -273,7 +275,8 @@ var MediaInlineSharedState = function MediaInlineSharedState(_ref3) {
273
275
  view: view,
274
276
  getPos: getPos,
275
277
  contextIdentifierProvider: contextIdentifierProvider,
276
- editorViewMode: viewMode === 'view'
278
+ editorViewMode: viewMode === 'view',
279
+ fallbackMediaNameFetcher: fallbackMediaNameFetcher
277
280
  });
278
281
  };
279
282
  var MediaInlineNodeView = exports.MediaInlineNodeView = /*#__PURE__*/function (_SelectionBasedNodeVi) {
@@ -307,7 +310,8 @@ var MediaInlineNodeView = exports.MediaInlineNodeView = /*#__PURE__*/function (_
307
310
  value: function render(props) {
308
311
  var _this = this;
309
312
  var providerFactory = props.providerFactory,
310
- api = props.api;
313
+ api = props.api,
314
+ fallbackMediaNameFetcher = props.fallbackMediaNameFetcher;
311
315
  var view = this.view;
312
316
  var getPos = this.getPos;
313
317
  return (0, _react2.jsx)(_providerFactory.WithProviders
@@ -327,19 +331,21 @@ var MediaInlineNodeView = exports.MediaInlineNodeView = /*#__PURE__*/function (_
327
331
  view: view,
328
332
  getPos: getPos,
329
333
  contextIdentifierProvider: contextIdentifierProvider,
330
- api: api
334
+ api: api,
335
+ fallbackMediaNameFetcher: fallbackMediaNameFetcher
331
336
  });
332
337
  }
333
338
  });
334
339
  }
335
340
  }]);
336
341
  }(_selectionBasedNodeView.SelectionBasedNodeView);
337
- var ReactMediaInlineNode = exports.ReactMediaInlineNode = function ReactMediaInlineNode(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent) {
342
+ var ReactMediaInlineNode = exports.ReactMediaInlineNode = function ReactMediaInlineNode(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent, fallbackMediaNameFetcher) {
338
343
  return function (node, view, getPos) {
339
344
  return new MediaInlineNodeView(node, view, getPos, portalProviderAPI, eventDispatcher, {
340
345
  providerFactory: providerFactory,
341
346
  dispatchAnalyticsEvent: dispatchAnalyticsEvent,
342
- api: api
347
+ api: api,
348
+ fallbackMediaNameFetcher: fallbackMediaNameFetcher
343
349
  }).init();
344
350
  };
345
351
  };
@@ -234,7 +234,7 @@ export const mediaPlugin = ({
234
234
  mediaGroup: lazyMediaGroupView(portalProviderAPI, eventDispatcher, providerFactory, options, api),
235
235
  mediaSingle: ReactMediaSingleNode(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent, options),
236
236
  media: ReactMediaNode(portalProviderAPI, eventDispatcher, providerFactory, options, api),
237
- mediaInline: lazyMediaInlineView(portalProviderAPI, eventDispatcher, providerFactory, api)
237
+ mediaInline: lazyMediaInlineView(portalProviderAPI, eventDispatcher, providerFactory, api, undefined, options === null || options === void 0 ? void 0 : options.fallbackMediaNameFetcher)
238
238
  },
239
239
  errorReporter,
240
240
  uploadErrorHandler: options && options.uploadErrorHandler,
@@ -1,5 +1,5 @@
1
1
  import { withLazyLoading } from '@atlaskit/editor-common/lazy-node-view';
2
- export const lazyMediaInlineView = (portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent) => {
2
+ export const lazyMediaInlineView = (portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent, fallbackMediaNameFetcher) => {
3
3
  return withLazyLoading({
4
4
  nodeName: 'mediaInline',
5
5
  getNodeViewOptions: () => {},
@@ -9,7 +9,7 @@ export const lazyMediaInlineView = (portalProviderAPI, eventDispatcher, provider
9
9
  ReactMediaInlineNode
10
10
  }) => {
11
11
  return (node, view, getPos) => {
12
- return ReactMediaInlineNode(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent)(node, view, getPos);
12
+ return ReactMediaInlineNode(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent, fallbackMediaNameFetcher)(node, view, getPos);
13
13
  };
14
14
  });
15
15
  return result;
@@ -152,7 +152,8 @@ export const MediaInline = props => {
152
152
  }, jsx(MediaInlineCard, {
153
153
  isSelected: props.isSelected,
154
154
  identifier: identifier,
155
- mediaClientConfig: viewMediaClientConfig
155
+ mediaClientConfig: viewMediaClientConfig,
156
+ fallbackMediaNameFetcher: props.fallbackMediaNameFetcher
156
157
  }));
157
158
  };
158
159
  const selector = states => {
@@ -175,7 +176,8 @@ const MediaInlineSharedState = ({
175
176
  getPos,
176
177
  contextIdentifierProvider,
177
178
  api,
178
- view
179
+ view,
180
+ fallbackMediaNameFetcher
179
181
  }) => {
180
182
  const {
181
183
  mediaProvider,
@@ -205,7 +207,8 @@ const MediaInlineSharedState = ({
205
207
  view: view,
206
208
  getPos: getPos,
207
209
  contextIdentifierProvider: contextIdentifierProvider,
208
- editorViewMode: viewMode === 'view'
210
+ editorViewMode: viewMode === 'view',
211
+ fallbackMediaNameFetcher: fallbackMediaNameFetcher
209
212
  });
210
213
  };
211
214
  export class MediaInlineNodeView extends SelectionBasedNodeView {
@@ -226,7 +229,8 @@ export class MediaInlineNodeView extends SelectionBasedNodeView {
226
229
  render(props) {
227
230
  const {
228
231
  providerFactory,
229
- api
232
+ api,
233
+ fallbackMediaNameFetcher
230
234
  } = props;
231
235
  const {
232
236
  view
@@ -250,16 +254,18 @@ export class MediaInlineNodeView extends SelectionBasedNodeView {
250
254
  view: view,
251
255
  getPos: getPos,
252
256
  contextIdentifierProvider: contextIdentifierProvider,
253
- api: api
257
+ api: api,
258
+ fallbackMediaNameFetcher: fallbackMediaNameFetcher
254
259
  });
255
260
  }
256
261
  });
257
262
  }
258
263
  }
259
- export const ReactMediaInlineNode = (portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent) => (node, view, getPos) => {
264
+ export const ReactMediaInlineNode = (portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent, fallbackMediaNameFetcher) => (node, view, getPos) => {
260
265
  return new MediaInlineNodeView(node, view, getPos, portalProviderAPI, eventDispatcher, {
261
266
  providerFactory,
262
267
  dispatchAnalyticsEvent,
263
- api
268
+ api,
269
+ fallbackMediaNameFetcher
264
270
  }).init();
265
271
  };
@@ -233,7 +233,7 @@ export var mediaPlugin = function mediaPlugin(_ref3) {
233
233
  mediaGroup: lazyMediaGroupView(portalProviderAPI, eventDispatcher, providerFactory, options, api),
234
234
  mediaSingle: ReactMediaSingleNode(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent, options),
235
235
  media: ReactMediaNode(portalProviderAPI, eventDispatcher, providerFactory, options, api),
236
- mediaInline: lazyMediaInlineView(portalProviderAPI, eventDispatcher, providerFactory, api)
236
+ mediaInline: lazyMediaInlineView(portalProviderAPI, eventDispatcher, providerFactory, api, undefined, options === null || options === void 0 ? void 0 : options.fallbackMediaNameFetcher)
237
237
  },
238
238
  errorReporter: errorReporter,
239
239
  uploadErrorHandler: options && options.uploadErrorHandler,
@@ -1,5 +1,5 @@
1
1
  import { withLazyLoading } from '@atlaskit/editor-common/lazy-node-view';
2
- export var lazyMediaInlineView = function lazyMediaInlineView(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent) {
2
+ export var lazyMediaInlineView = function lazyMediaInlineView(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent, fallbackMediaNameFetcher) {
3
3
  return withLazyLoading({
4
4
  nodeName: 'mediaInline',
5
5
  getNodeViewOptions: function getNodeViewOptions() {},
@@ -8,7 +8,7 @@ export var lazyMediaInlineView = function lazyMediaInlineView(portalProviderAPI,
8
8
  './mediaInline').then(function (_ref) {
9
9
  var ReactMediaInlineNode = _ref.ReactMediaInlineNode;
10
10
  return function (node, view, getPos) {
11
- return ReactMediaInlineNode(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent)(node, view, getPos);
11
+ return ReactMediaInlineNode(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent, fallbackMediaNameFetcher)(node, view, getPos);
12
12
  };
13
13
  });
14
14
  return result;
@@ -216,7 +216,8 @@ export var MediaInline = function MediaInline(props) {
216
216
  }, jsx(MediaInlineCard, {
217
217
  isSelected: props.isSelected,
218
218
  identifier: identifier,
219
- mediaClientConfig: viewMediaClientConfig
219
+ mediaClientConfig: viewMediaClientConfig,
220
+ fallbackMediaNameFetcher: props.fallbackMediaNameFetcher
220
221
  }));
221
222
  };
222
223
  var selector = function selector(states) {
@@ -239,7 +240,8 @@ var MediaInlineSharedState = function MediaInlineSharedState(_ref3) {
239
240
  getPos = _ref3.getPos,
240
241
  contextIdentifierProvider = _ref3.contextIdentifierProvider,
241
242
  api = _ref3.api,
242
- view = _ref3.view;
243
+ view = _ref3.view,
244
+ fallbackMediaNameFetcher = _ref3.fallbackMediaNameFetcher;
243
245
  var _useSharedPluginState = useSharedPluginStateWithSelector(api, ['editorViewMode', 'media'], selector),
244
246
  mediaProvider = _useSharedPluginState.mediaProvider,
245
247
  allowInlineImages = _useSharedPluginState.allowInlineImages,
@@ -269,7 +271,8 @@ var MediaInlineSharedState = function MediaInlineSharedState(_ref3) {
269
271
  view: view,
270
272
  getPos: getPos,
271
273
  contextIdentifierProvider: contextIdentifierProvider,
272
- editorViewMode: viewMode === 'view'
274
+ editorViewMode: viewMode === 'view',
275
+ fallbackMediaNameFetcher: fallbackMediaNameFetcher
273
276
  });
274
277
  };
275
278
  export var MediaInlineNodeView = /*#__PURE__*/function (_SelectionBasedNodeVi) {
@@ -303,7 +306,8 @@ export var MediaInlineNodeView = /*#__PURE__*/function (_SelectionBasedNodeVi) {
303
306
  value: function render(props) {
304
307
  var _this = this;
305
308
  var providerFactory = props.providerFactory,
306
- api = props.api;
309
+ api = props.api,
310
+ fallbackMediaNameFetcher = props.fallbackMediaNameFetcher;
307
311
  var view = this.view;
308
312
  var getPos = this.getPos;
309
313
  return jsx(WithProviders
@@ -323,19 +327,21 @@ export var MediaInlineNodeView = /*#__PURE__*/function (_SelectionBasedNodeVi) {
323
327
  view: view,
324
328
  getPos: getPos,
325
329
  contextIdentifierProvider: contextIdentifierProvider,
326
- api: api
330
+ api: api,
331
+ fallbackMediaNameFetcher: fallbackMediaNameFetcher
327
332
  });
328
333
  }
329
334
  });
330
335
  }
331
336
  }]);
332
337
  }(SelectionBasedNodeView);
333
- export var ReactMediaInlineNode = function ReactMediaInlineNode(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent) {
338
+ export var ReactMediaInlineNode = function ReactMediaInlineNode(portalProviderAPI, eventDispatcher, providerFactory, api, dispatchAnalyticsEvent, fallbackMediaNameFetcher) {
334
339
  return function (node, view, getPos) {
335
340
  return new MediaInlineNodeView(node, view, getPos, portalProviderAPI, eventDispatcher, {
336
341
  providerFactory: providerFactory,
337
342
  dispatchAnalyticsEvent: dispatchAnalyticsEvent,
338
- api: api
343
+ api: api,
344
+ fallbackMediaNameFetcher: fallbackMediaNameFetcher
339
345
  }).init();
340
346
  };
341
347
  };
@@ -5,4 +5,4 @@ import type { PortalProviderAPI } from '@atlaskit/editor-common/portal';
5
5
  import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
6
6
  import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types';
7
7
  import type { MediaNextEditorPluginType } from '../mediaPluginType';
8
- export declare const lazyMediaInlineView: (portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined, dispatchAnalyticsEvent?: DispatchAnalyticsEvent) => NodeViewConstructor;
8
+ export declare const lazyMediaInlineView: (portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined, dispatchAnalyticsEvent?: DispatchAnalyticsEvent, fallbackMediaNameFetcher?: (id: string) => Promise<string>) => NodeViewConstructor;
@@ -17,6 +17,7 @@ export interface MediaInlineProps {
17
17
  contextIdentifierProvider?: Promise<ContextIdentifierProvider>;
18
18
  dispatchAnalyticsEvent?: DispatchAnalyticsEvent;
19
19
  editorViewMode?: boolean;
20
+ fallbackMediaNameFetcher?: (id: string) => Promise<string>;
20
21
  getPos: ProsemirrorGetPosHandler;
21
22
  handleMediaNodeMount: (node: PMNode, getPos: ProsemirrorGetPosHandler) => void;
22
23
  handleMediaNodeUnmount: (node: PMNode) => void;
@@ -33,6 +34,7 @@ export declare const MediaInline: (props: MediaInlineProps) => jsx.JSX.Element;
33
34
  interface MediaInlineNodeViewProps {
34
35
  api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined;
35
36
  dispatchAnalyticsEvent?: DispatchAnalyticsEvent;
37
+ fallbackMediaNameFetcher?: (id: string) => Promise<string>;
36
38
  providerFactory: ProviderFactory;
37
39
  }
38
40
  export declare class MediaInlineNodeView extends SelectionBasedNodeView<MediaInlineNodeViewProps> {
@@ -41,5 +43,5 @@ export declare class MediaInlineNodeView extends SelectionBasedNodeView<MediaInl
41
43
  viewShouldUpdate(nextNode: PMNode): boolean;
42
44
  render(props: MediaInlineNodeViewProps): jsx.JSX.Element;
43
45
  }
44
- export declare const ReactMediaInlineNode: (portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined, dispatchAnalyticsEvent?: DispatchAnalyticsEvent) => (node: PMNode, view: EditorView, getPos: getPosHandler) => NodeView;
46
+ export declare const ReactMediaInlineNode: (portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined, dispatchAnalyticsEvent?: DispatchAnalyticsEvent, fallbackMediaNameFetcher?: (id: string) => Promise<string>) => (node: PMNode, view: EditorView, getPos: getPosHandler) => NodeView;
45
47
  export {};
@@ -69,6 +69,12 @@ export interface MediaPluginOptions {
69
69
  editorAppearance?: EditorAppearance;
70
70
  editorSelectionAPI?: EditorSelectionAPI;
71
71
  enableDownloadButton?: boolean;
72
+ /**
73
+ * Optional fallback fetcher to retrieve the media filename from another service
74
+ * Workaround for #hot-301450 where media service is missing filenames for DC -> Cloud migrated media
75
+ * Receives the file ID and should resolve to the filename string.
76
+ */
77
+ fallbackMediaNameFetcher?: (id: string) => Promise<string>;
72
78
  featureFlags?: MediaFeatureFlags;
73
79
  forceHandlePositioning?: HandlePositioning;
74
80
  fullWidthEnabled?: boolean;
@@ -5,4 +5,4 @@ import type { PortalProviderAPI } from '@atlaskit/editor-common/portal';
5
5
  import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
6
6
  import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types';
7
7
  import type { MediaNextEditorPluginType } from '../mediaPluginType';
8
- export declare const lazyMediaInlineView: (portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined, dispatchAnalyticsEvent?: DispatchAnalyticsEvent) => NodeViewConstructor;
8
+ export declare const lazyMediaInlineView: (portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined, dispatchAnalyticsEvent?: DispatchAnalyticsEvent, fallbackMediaNameFetcher?: (id: string) => Promise<string>) => NodeViewConstructor;
@@ -17,6 +17,7 @@ export interface MediaInlineProps {
17
17
  contextIdentifierProvider?: Promise<ContextIdentifierProvider>;
18
18
  dispatchAnalyticsEvent?: DispatchAnalyticsEvent;
19
19
  editorViewMode?: boolean;
20
+ fallbackMediaNameFetcher?: (id: string) => Promise<string>;
20
21
  getPos: ProsemirrorGetPosHandler;
21
22
  handleMediaNodeMount: (node: PMNode, getPos: ProsemirrorGetPosHandler) => void;
22
23
  handleMediaNodeUnmount: (node: PMNode) => void;
@@ -33,6 +34,7 @@ export declare const MediaInline: (props: MediaInlineProps) => jsx.JSX.Element;
33
34
  interface MediaInlineNodeViewProps {
34
35
  api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined;
35
36
  dispatchAnalyticsEvent?: DispatchAnalyticsEvent;
37
+ fallbackMediaNameFetcher?: (id: string) => Promise<string>;
36
38
  providerFactory: ProviderFactory;
37
39
  }
38
40
  export declare class MediaInlineNodeView extends SelectionBasedNodeView<MediaInlineNodeViewProps> {
@@ -41,5 +43,5 @@ export declare class MediaInlineNodeView extends SelectionBasedNodeView<MediaInl
41
43
  viewShouldUpdate(nextNode: PMNode): boolean;
42
44
  render(props: MediaInlineNodeViewProps): jsx.JSX.Element;
43
45
  }
44
- export declare const ReactMediaInlineNode: (portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined, dispatchAnalyticsEvent?: DispatchAnalyticsEvent) => (node: PMNode, view: EditorView, getPos: getPosHandler) => NodeView;
46
+ export declare const ReactMediaInlineNode: (portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, api: ExtractInjectionAPI<MediaNextEditorPluginType> | undefined, dispatchAnalyticsEvent?: DispatchAnalyticsEvent, fallbackMediaNameFetcher?: (id: string) => Promise<string>) => (node: PMNode, view: EditorView, getPos: getPosHandler) => NodeView;
45
47
  export {};
@@ -69,6 +69,12 @@ export interface MediaPluginOptions {
69
69
  editorAppearance?: EditorAppearance;
70
70
  editorSelectionAPI?: EditorSelectionAPI;
71
71
  enableDownloadButton?: boolean;
72
+ /**
73
+ * Optional fallback fetcher to retrieve the media filename from another service
74
+ * Workaround for #hot-301450 where media service is missing filenames for DC -> Cloud migrated media
75
+ * Receives the file ID and should resolve to the filename string.
76
+ */
77
+ fallbackMediaNameFetcher?: (id: string) => Promise<string>;
72
78
  featureFlags?: MediaFeatureFlags;
73
79
  forceHandlePositioning?: HandlePositioning;
74
80
  fullWidthEnabled?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-media",
3
- "version": "12.0.0",
3
+ "version": "12.1.0",
4
4
  "description": "Media plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -54,7 +54,7 @@
54
54
  "@atlaskit/form": "^15.5.0",
55
55
  "@atlaskit/icon": "^34.2.0",
56
56
  "@atlaskit/icon-lab": "^6.5.0",
57
- "@atlaskit/media-card": "^80.0.0",
57
+ "@atlaskit/media-card": "^80.1.0",
58
58
  "@atlaskit/media-client": "^36.0.0",
59
59
  "@atlaskit/media-client-react": "^5.0.0",
60
60
  "@atlaskit/media-common": "^13.0.0",
@@ -65,7 +65,7 @@
65
65
  "@atlaskit/platform-feature-flags": "^1.1.0",
66
66
  "@atlaskit/primitives": "^19.0.0",
67
67
  "@atlaskit/textfield": "^8.3.0",
68
- "@atlaskit/tmp-editor-statsig": "^62.4.0",
68
+ "@atlaskit/tmp-editor-statsig": "^62.8.0",
69
69
  "@atlaskit/tokens": "^13.0.0",
70
70
  "@atlaskit/tooltip": "^21.1.0",
71
71
  "@babel/runtime": "^7.0.0",
@@ -77,7 +77,7 @@
77
77
  "uuid": "^3.1.0"
78
78
  },
79
79
  "peerDependencies": {
80
- "@atlaskit/editor-common": "^114.0.0",
80
+ "@atlaskit/editor-common": "^114.1.0",
81
81
  "@atlaskit/media-core": "^37.0.0",
82
82
  "react": "^18.2.0",
83
83
  "react-dom": "^18.2.0",