@atlaskit/media-card 71.0.0 → 72.0.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 +18 -0
- package/dist/cjs/errors.js +56 -5
- package/dist/cjs/files/cardImageView/index.js +53 -104
- package/dist/cjs/files/index.js +0 -6
- package/dist/cjs/root/card/cardAnalytics.js +3 -15
- package/dist/cjs/root/card/cardSSRView.js +4 -2
- package/dist/cjs/root/card/cardState.js +50 -0
- package/dist/cjs/root/card/getCardPreview/cache.js +5 -0
- package/dist/cjs/root/card/getCardPreview/filePreviewStatus.js +50 -0
- package/dist/cjs/root/card/getCardPreview/helpers.js +13 -21
- package/dist/cjs/root/card/getCardPreview/index.js +91 -94
- package/dist/cjs/root/card/getCardStatus.js +7 -1
- package/dist/cjs/root/card/index.js +271 -266
- package/dist/cjs/root/cardView.js +96 -60
- package/dist/cjs/root/inline/loader.js +2 -1
- package/dist/cjs/root/inline/mediaInlineCard.js +4 -3
- package/dist/cjs/root/ui/iconMessage/index.js +12 -5
- package/dist/cjs/root/ui/imageRenderer/imageRenderer.js +30 -124
- package/dist/cjs/root/ui/titleBox/failedTitleBox.js +7 -3
- package/dist/cjs/utils/analytics.js +6 -44
- package/dist/cjs/utils/dimensionComparer.js +1 -1
- package/dist/cjs/utils/metadata.js +11 -3
- package/dist/cjs/utils/objectURLCache.js +6 -0
- package/dist/cjs/utils/shouldDisplayImageThumbnail.js +1 -1
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/errors.js +34 -2
- package/dist/es2019/files/cardImageView/index.js +8 -61
- package/dist/es2019/files/index.js +1 -1
- package/dist/es2019/root/card/cardAnalytics.js +3 -14
- package/dist/es2019/root/card/cardSSRView.js +3 -2
- package/dist/es2019/root/card/cardState.js +26 -0
- package/dist/es2019/root/card/getCardPreview/cache.js +5 -0
- package/dist/es2019/root/card/getCardPreview/filePreviewStatus.js +35 -0
- package/dist/es2019/root/card/getCardPreview/helpers.js +2 -12
- package/dist/es2019/root/card/getCardPreview/index.js +71 -74
- package/dist/es2019/root/card/getCardStatus.js +1 -0
- package/dist/es2019/root/card/index.js +193 -171
- package/dist/es2019/root/cardView.js +100 -61
- package/dist/es2019/root/inline/loader.js +2 -1
- package/dist/es2019/root/inline/mediaInlineCard.js +4 -3
- package/dist/es2019/root/ui/iconMessage/index.js +5 -3
- package/dist/es2019/root/ui/imageRenderer/imageRenderer.js +21 -88
- package/dist/es2019/root/ui/titleBox/failedTitleBox.js +5 -3
- package/dist/es2019/utils/analytics.js +5 -34
- package/dist/es2019/utils/dimensionComparer.js +1 -1
- package/dist/es2019/utils/metadata.js +12 -4
- package/dist/es2019/utils/objectURLCache.js +5 -0
- package/dist/es2019/utils/shouldDisplayImageThumbnail.js +1 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/errors.js +42 -1
- package/dist/esm/files/cardImageView/index.js +51 -102
- package/dist/esm/files/index.js +1 -1
- package/dist/esm/root/card/cardAnalytics.js +3 -15
- package/dist/esm/root/card/cardSSRView.js +3 -2
- package/dist/esm/root/card/cardState.js +32 -0
- package/dist/esm/root/card/getCardPreview/cache.js +6 -0
- package/dist/esm/root/card/getCardPreview/filePreviewStatus.js +35 -0
- package/dist/esm/root/card/getCardPreview/helpers.js +13 -21
- package/dist/esm/root/card/getCardPreview/index.js +79 -88
- package/dist/esm/root/card/getCardStatus.js +3 -0
- package/dist/esm/root/card/index.js +278 -268
- package/dist/esm/root/cardView.js +98 -61
- package/dist/esm/root/inline/loader.js +2 -1
- package/dist/esm/root/inline/mediaInlineCard.js +4 -3
- package/dist/esm/root/ui/iconMessage/index.js +7 -3
- package/dist/esm/root/ui/imageRenderer/imageRenderer.js +23 -118
- package/dist/esm/root/ui/titleBox/failedTitleBox.js +6 -3
- package/dist/esm/utils/analytics.js +5 -36
- package/dist/esm/utils/dimensionComparer.js +1 -1
- package/dist/esm/utils/metadata.js +12 -4
- package/dist/esm/utils/objectURLCache.js +6 -0
- package/dist/esm/utils/shouldDisplayImageThumbnail.js +1 -1
- package/dist/esm/version.json +1 -1
- package/dist/types/errors.d.ts +9 -1
- package/dist/types/files/cardImageView/index.d.ts +4 -13
- package/dist/types/files/cardImageView/styled.d.ts +1 -1
- package/dist/types/files/index.d.ts +1 -1
- package/dist/types/index.d.ts +4 -3
- package/dist/types/root/card/cardAnalytics.d.ts +1 -6
- package/dist/types/root/card/cardSSRView.d.ts +1 -1
- package/dist/types/root/card/cardState.d.ts +5 -0
- package/dist/types/root/card/getCardPreview/cache.d.ts +3 -1
- package/dist/types/root/card/getCardPreview/filePreviewStatus.d.ts +5 -0
- package/dist/types/root/card/getCardPreview/helpers.d.ts +3 -4
- package/dist/types/root/card/getCardPreview/index.d.ts +17 -13
- package/dist/types/root/card/getCardStatus.d.ts +1 -0
- package/dist/types/root/card/index.d.ts +11 -10
- package/dist/types/root/cardView.d.ts +11 -8
- package/dist/types/root/inlinePlayer.d.ts +1 -1
- package/dist/types/root/ui/iconMessage/index.d.ts +2 -1
- package/dist/types/root/ui/imageRenderer/imageRenderer.d.ts +2 -13
- package/dist/types/root/ui/styledSSR.d.ts +1 -1
- package/dist/types/root/ui/titleBox/failedTitleBox.d.ts +2 -0
- package/dist/types/styles/mixins.d.ts +1 -1
- package/dist/types/types.d.ts +7 -1
- package/dist/types/utils/analytics.d.ts +6 -15
- package/dist/types/utils/cardDimensions.d.ts +4 -4
- package/dist/types/utils/dimensionComparer.d.ts +1 -1
- package/dist/types/utils/metadata.d.ts +2 -2
- package/dist/types/utils/objectURLCache.d.ts +2 -1
- package/example-helpers/index.tsx +21 -0
- package/package.json +6 -5
- package/dist/cjs/root/card/getCardPreview/types.js +0 -5
- package/dist/cjs/utils/fileAttributesContext.js +0 -40
- package/dist/es2019/root/card/getCardPreview/types.js +0 -1
- package/dist/es2019/utils/fileAttributesContext.js +0 -19
- package/dist/esm/root/card/getCardPreview/types.js +0 -1
- package/dist/esm/utils/fileAttributesContext.js +0 -18
- package/dist/types/root/card/getCardPreview/types.d.ts +0 -5
- package/dist/types/utils/fileAttributesContext.d.ts +0 -10
|
@@ -27,7 +27,7 @@ import { Wrapper } from './styled';
|
|
|
27
27
|
import { createAndFireMediaCardEvent } from '../utils/analytics';
|
|
28
28
|
import { attachDetailsToActions } from '../actions';
|
|
29
29
|
import { getErrorMessage } from '../utils/getErrorMessage';
|
|
30
|
-
import { toHumanReadableMediaSize } from '@atlaskit/media-ui';
|
|
30
|
+
import { toHumanReadableMediaSize, messages } from '@atlaskit/media-ui';
|
|
31
31
|
import { NewFileExperienceWrapper } from './ui/styled';
|
|
32
32
|
import { CardImageContainer, calcBreakpointSize } from './ui/styledSSR';
|
|
33
33
|
import { ImageRenderer } from './ui/imageRenderer/imageRenderer';
|
|
@@ -42,10 +42,10 @@ import Tooltip from '@atlaskit/tooltip';
|
|
|
42
42
|
import { IconWrapper } from './ui/iconWrapper/styled';
|
|
43
43
|
import { MimeTypeIcon } from '@atlaskit/media-ui/mime-type-icon';
|
|
44
44
|
import SpinnerIcon from '@atlaskit/spinner';
|
|
45
|
-
import { PreviewUnavailable, CreatingPreview,
|
|
46
|
-
import { LoadingRateLimited } from './ui/loadingRateLimited/loadingRateLimited';
|
|
45
|
+
import { PreviewUnavailable, CreatingPreview, FailedToUpload, PreviewCurrentlyUnavailable, FailedToLoad } from './ui/iconMessage';
|
|
47
46
|
import { isRateLimitedError, isPollingError } from '@atlaskit/media-client';
|
|
48
47
|
import { newFileExperienceClassName } from './card/cardConstants';
|
|
48
|
+
import { isUploadError } from '../errors';
|
|
49
49
|
|
|
50
50
|
/**
|
|
51
51
|
* This is classic vanilla CardView class. To create an instance of class one would need to supply
|
|
@@ -68,15 +68,36 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
|
|
|
68
68
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
69
69
|
|
|
70
70
|
_defineProperty(_assertThisInitialized(_this), "state", {
|
|
71
|
-
|
|
71
|
+
didImageRender: false
|
|
72
72
|
});
|
|
73
73
|
|
|
74
74
|
_defineProperty(_assertThisInitialized(_this), "divRef", /*#__PURE__*/React.createRef());
|
|
75
75
|
|
|
76
|
-
_defineProperty(_assertThisInitialized(_this), "
|
|
76
|
+
_defineProperty(_assertThisInitialized(_this), "onImageLoad", function () {
|
|
77
|
+
var onImageLoad = _this.props.onImageLoad; // We render the icon & icon message always, even if there is dataURI available.
|
|
78
|
+
// If the image fails to load/render, the icon will remain, i.e. the user won't see a change until
|
|
79
|
+
// the root card decides to chage status to error.
|
|
80
|
+
// If the image renders successfully, we switch this variable to hide the icon & icon message
|
|
81
|
+
// behind the thumbnail in case the image has transparency.
|
|
82
|
+
// It is less likely that root component replaces a suceeded dataURI for a failed one
|
|
83
|
+
// than the opposite case. Therefore we prefer to hide the icon instead show when the image fails,
|
|
84
|
+
// for a smoother transition
|
|
85
|
+
|
|
86
|
+
_this.setState({
|
|
87
|
+
didImageRender: true
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
onImageLoad && onImageLoad();
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
_defineProperty(_assertThisInitialized(_this), "onImageError", function () {
|
|
94
|
+
var onImageError = _this.props.onImageError;
|
|
95
|
+
|
|
77
96
|
_this.setState({
|
|
78
|
-
|
|
97
|
+
didImageRender: false
|
|
79
98
|
});
|
|
99
|
+
|
|
100
|
+
onImageError && onImageError();
|
|
80
101
|
});
|
|
81
102
|
|
|
82
103
|
_defineProperty(_assertThisInitialized(_this), "saveElementWidth", function () {
|
|
@@ -115,7 +136,7 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
|
|
|
115
136
|
name = _ref.name;
|
|
116
137
|
|
|
117
138
|
var shouldUsePointerCursor = status !== 'error' && status !== 'failed-processing';
|
|
118
|
-
var shouldDisplayBackground = !dataURI || !disableOverlay;
|
|
139
|
+
var shouldDisplayBackground = !dataURI || !disableOverlay || status === 'error' || status === 'failed-processing';
|
|
119
140
|
var isPlayButtonClickable = !!(_this.shouldRenderPlayButton() && disableOverlay);
|
|
120
141
|
var isTickBoxSelectable = !disableOverlay && !!selectable && !selected; // Make tooltip optional for media singles - images, videos.
|
|
121
142
|
// Intention is to show full file name when it's truncate in titlebox,
|
|
@@ -160,8 +181,7 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
|
|
|
160
181
|
previewOrientation = _this$props2.previewOrientation,
|
|
161
182
|
alt = _this$props2.alt,
|
|
162
183
|
onDisplayImage = _this$props2.onDisplayImage,
|
|
163
|
-
actions = _this$props2.actions
|
|
164
|
-
timeElapsedTillCommenced = _this$props2.timeElapsedTillCommenced;
|
|
184
|
+
actions = _this$props2.actions;
|
|
165
185
|
|
|
166
186
|
var _ref2 = metadata || {},
|
|
167
187
|
name = _ref2.name,
|
|
@@ -191,7 +211,8 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
|
|
|
191
211
|
disableOverlay: disableOverlay,
|
|
192
212
|
previewOrientation: previewOrientation,
|
|
193
213
|
alt: alt,
|
|
194
|
-
|
|
214
|
+
onImageLoad: _this.onImageLoad,
|
|
215
|
+
onImageError: _this.onImageError
|
|
195
216
|
});
|
|
196
217
|
});
|
|
197
218
|
|
|
@@ -209,15 +230,14 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
|
|
|
209
230
|
name = _ref3.name,
|
|
210
231
|
mediaType = _ref3.mediaType;
|
|
211
232
|
|
|
212
|
-
var
|
|
233
|
+
var didImageRender = _this.state.didImageRender;
|
|
213
234
|
var isZeroSize = !!(metadata && metadata.size === 0);
|
|
214
235
|
var defaultConfig = {
|
|
215
|
-
renderTypeIcon:
|
|
216
|
-
renderImageRenderer: !!dataURI
|
|
236
|
+
renderTypeIcon: !didImageRender,
|
|
237
|
+
renderImageRenderer: !!dataURI,
|
|
217
238
|
renderPlayButton: !!dataURI && mediaType === 'video',
|
|
218
239
|
renderBlanket: !disableOverlay,
|
|
219
|
-
renderTitleBox:
|
|
220
|
-
renderFailedTitleBox: !!isImageFailedToLoad && !metadata,
|
|
240
|
+
renderTitleBox: !disableOverlay && !!name,
|
|
221
241
|
renderTickBox: !disableOverlay && !!selectable
|
|
222
242
|
};
|
|
223
243
|
|
|
@@ -232,55 +252,71 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
|
|
|
232
252
|
case 'processing':
|
|
233
253
|
case 'loading-preview':
|
|
234
254
|
return _objectSpread(_objectSpread({}, defaultConfig), {}, {
|
|
235
|
-
iconMessage:
|
|
255
|
+
iconMessage: !didImageRender && !isZeroSize ? /*#__PURE__*/React.createElement(CreatingPreview, {
|
|
236
256
|
disableAnimation: disableAnimation
|
|
237
257
|
}) : undefined
|
|
238
258
|
});
|
|
239
259
|
|
|
240
260
|
case 'complete':
|
|
241
|
-
return
|
|
242
|
-
iconMessage: !!isImageFailedToLoad && !!metadata ? /*#__PURE__*/React.createElement(PreviewUnavailable, null) : undefined
|
|
243
|
-
});
|
|
261
|
+
return defaultConfig;
|
|
244
262
|
|
|
245
263
|
case 'error':
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
264
|
+
case 'failed-processing':
|
|
265
|
+
var baseErrorConfig = _objectSpread(_objectSpread({}, defaultConfig), {}, {
|
|
266
|
+
renderTypeIcon: true,
|
|
267
|
+
renderImageRenderer: false,
|
|
268
|
+
renderTitleBox: false,
|
|
269
|
+
renderPlayButton: false
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
var iconMessage;
|
|
273
|
+
|
|
274
|
+
if (!!metadata) {
|
|
275
|
+
if (error) {
|
|
276
|
+
var secondaryError = error.secondaryError;
|
|
277
|
+
|
|
278
|
+
if (isRateLimitedError(secondaryError) || secondaryError && isPollingError(secondaryError)) {
|
|
279
|
+
iconMessage = /*#__PURE__*/React.createElement(PreviewCurrentlyUnavailable, null);
|
|
280
|
+
}
|
|
281
|
+
} else if (!isZeroSize) {
|
|
282
|
+
iconMessage = /*#__PURE__*/React.createElement(PreviewUnavailable, null);
|
|
283
|
+
}
|
|
284
|
+
} else if (!!disableOverlay) {
|
|
285
|
+
iconMessage = /*#__PURE__*/React.createElement(FailedToLoad, null);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
if (error && isUploadError(error)) {
|
|
289
|
+
if (!disableOverlay) {
|
|
290
|
+
return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
|
|
291
|
+
renderFailedTitleBox: true,
|
|
292
|
+
customTitleMessage: messages.failed_to_upload
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
|
|
297
|
+
renderTitleBox: !metadata && !!name,
|
|
298
|
+
iconMessage: /*#__PURE__*/React.createElement(FailedToUpload, null)
|
|
253
299
|
});
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
} else {
|
|
262
|
-
return _objectSpread(_objectSpread({}, defaultConfig), {}, {
|
|
263
|
-
renderTypeIcon: true,
|
|
264
|
-
renderImageRenderer: false,
|
|
265
|
-
renderTitleBox: false,
|
|
266
|
-
renderFailedTitleBox: true
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
if (!disableOverlay) {
|
|
303
|
+
return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
|
|
304
|
+
renderTitleBox: !!name,
|
|
305
|
+
renderFailedTitleBox: !metadata,
|
|
306
|
+
iconMessage: iconMessage
|
|
267
307
|
});
|
|
268
308
|
}
|
|
269
309
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
renderTypeIcon: true,
|
|
273
|
-
renderImageRenderer: false,
|
|
274
|
-
renderTitleBox: !!name && !disableOverlay,
|
|
275
|
-
renderFailedTitleBox: !metadata,
|
|
276
|
-
iconMessage: !!metadata && !isZeroSize ? /*#__PURE__*/React.createElement(PreviewUnavailable, null) : undefined
|
|
310
|
+
return _objectSpread(_objectSpread({}, baseErrorConfig), {}, {
|
|
311
|
+
iconMessage: iconMessage
|
|
277
312
|
});
|
|
278
313
|
|
|
279
314
|
case 'loading':
|
|
280
315
|
default:
|
|
281
316
|
return _objectSpread(_objectSpread({}, defaultConfig), {}, {
|
|
317
|
+
renderPlayButton: false,
|
|
282
318
|
renderTypeIcon: false,
|
|
283
|
-
renderSpinner:
|
|
319
|
+
renderSpinner: !didImageRender
|
|
284
320
|
});
|
|
285
321
|
}
|
|
286
322
|
});
|
|
@@ -298,7 +334,7 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
|
|
|
298
334
|
renderFailedTitleBox = _this$getRenderConfig.renderFailedTitleBox,
|
|
299
335
|
renderTickBox = _this$getRenderConfig.renderTickBox,
|
|
300
336
|
isFixedBlanket = _this$getRenderConfig.isFixedBlanket,
|
|
301
|
-
|
|
337
|
+
customTitleMessage = _this$getRenderConfig.customTitleMessage;
|
|
302
338
|
|
|
303
339
|
var _this$props4 = _this.props,
|
|
304
340
|
progress = _this$props4.progress,
|
|
@@ -317,7 +353,7 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
|
|
|
317
353
|
"data-test-status": status,
|
|
318
354
|
"data-test-progress": progress,
|
|
319
355
|
"data-test-selected": selected ? true : undefined
|
|
320
|
-
}, renderTypeIcon && _this.renderMediaTypeIcon(hasTitleBox, iconMessage), renderSpinner && _this.renderSpinner(hasTitleBox), renderImageRenderer && _this.renderImageRenderer(), renderPlayButton && _this.renderPlayButton(hasTitleBox), renderBlanket && _this.renderBlanket(!!isFixedBlanket), renderTitleBox && _this.renderTitleBox(), renderFailedTitleBox && _this.renderFailedTitleBox(), renderProgressBar && _this.renderProgressBar(!hasTitleBox),
|
|
356
|
+
}, renderTypeIcon && _this.renderMediaTypeIcon(hasTitleBox, iconMessage), renderSpinner && _this.renderSpinner(hasTitleBox), renderImageRenderer && _this.renderImageRenderer(), renderPlayButton && _this.renderPlayButton(hasTitleBox), renderBlanket && _this.renderBlanket(!!isFixedBlanket), renderTitleBox && _this.renderTitleBox(), renderFailedTitleBox && _this.renderFailedTitleBox(customTitleMessage), renderProgressBar && _this.renderProgressBar(!hasTitleBox), renderTickBox && _this.renderTickBox()), _this.renderActionsBar());
|
|
321
357
|
});
|
|
322
358
|
|
|
323
359
|
return _this;
|
|
@@ -334,13 +370,14 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
|
|
|
334
370
|
key: "componentDidUpdate",
|
|
335
371
|
value: function componentDidUpdate(_ref5) {
|
|
336
372
|
var prevDataURI = _ref5.dataURI;
|
|
337
|
-
var dataURI = this.props.dataURI;
|
|
373
|
+
var dataURI = this.props.dataURI; // We should only switch didImageRender to false
|
|
374
|
+
// when dataURI goes undefined, not when it is updated.
|
|
375
|
+
// as this method could be triggered after onImageLoad callback,
|
|
376
|
+
// falling on a race condition
|
|
338
377
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
});
|
|
343
|
-
}
|
|
378
|
+
prevDataURI && !dataURI && this.setState({
|
|
379
|
+
didImageRender: false
|
|
380
|
+
});
|
|
344
381
|
}
|
|
345
382
|
}, {
|
|
346
383
|
key: "width",
|
|
@@ -461,9 +498,10 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
|
|
|
461
498
|
}
|
|
462
499
|
}, {
|
|
463
500
|
key: "renderFailedTitleBox",
|
|
464
|
-
value: function renderFailedTitleBox() {
|
|
501
|
+
value: function renderFailedTitleBox(customMessage) {
|
|
465
502
|
return /*#__PURE__*/React.createElement(FailedTitleBox, {
|
|
466
|
-
breakpoint: this.breakpoint
|
|
503
|
+
breakpoint: this.breakpoint,
|
|
504
|
+
customMessage: customMessage
|
|
467
505
|
});
|
|
468
506
|
}
|
|
469
507
|
}, {
|
|
@@ -489,8 +527,7 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
|
|
|
489
527
|
alt = _this$props8.alt,
|
|
490
528
|
resizeMode = _this$props8.resizeMode,
|
|
491
529
|
onDisplayImage = _this$props8.onDisplayImage,
|
|
492
|
-
mediaItemType = _this$props8.mediaItemType
|
|
493
|
-
timeElapsedTillCommenced = _this$props8.timeElapsedTillCommenced;
|
|
530
|
+
mediaItemType = _this$props8.mediaItemType;
|
|
494
531
|
return !!dataURI && /*#__PURE__*/React.createElement(ImageRenderer, {
|
|
495
532
|
dataURI: dataURI,
|
|
496
533
|
mediaType: mediaType,
|
|
@@ -499,8 +536,8 @@ export var CardViewBase = /*#__PURE__*/function (_React$Component) {
|
|
|
499
536
|
alt: alt,
|
|
500
537
|
resizeMode: resizeMode,
|
|
501
538
|
onDisplayImage: onDisplayImage,
|
|
502
|
-
|
|
503
|
-
|
|
539
|
+
onImageLoad: this.onImageLoad,
|
|
540
|
+
onImageError: this.onImageError
|
|
504
541
|
});
|
|
505
542
|
}
|
|
506
543
|
}, {
|
|
@@ -33,7 +33,8 @@ var MediaInlineCardLoader = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
33
33
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
34
34
|
|
|
35
35
|
_defineProperty(_assertThisInitialized(_this), "state", {
|
|
36
|
-
MediaInlineCard: MediaInlineCardLoader.MediaInlineCard
|
|
36
|
+
MediaInlineCard: MediaInlineCardLoader.MediaInlineCard,
|
|
37
|
+
ErrorBoundary: MediaInlineCardLoader.ErrorBoundary
|
|
37
38
|
});
|
|
38
39
|
|
|
39
40
|
return _this;
|
|
@@ -126,14 +126,15 @@ export var MediaInlineCardInternal = function MediaInlineCardInternal(_ref) {
|
|
|
126
126
|
formattedDate = formatDate(fileState.createdAt, locale);
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
return /*#__PURE__*/React.createElement(Tooltip, {
|
|
129
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Tooltip, {
|
|
130
130
|
position: "bottom",
|
|
131
|
-
content: formattedDate
|
|
131
|
+
content: formattedDate,
|
|
132
|
+
tag: "span"
|
|
132
133
|
}, /*#__PURE__*/React.createElement(MediaInlineCardLoadedView, {
|
|
133
134
|
icon: linkIcon,
|
|
134
135
|
title: name,
|
|
135
136
|
onClick: onMediaInlineCardClick,
|
|
136
137
|
isSelected: isSelected
|
|
137
|
-
}), mediaViewer);
|
|
138
|
+
})), mediaViewer);
|
|
138
139
|
};
|
|
139
140
|
export var MediaInlineCard = injectIntl(MediaInlineCardInternal);
|
|
@@ -26,10 +26,14 @@ export var PreviewUnavailable = function PreviewUnavailable(props) {
|
|
|
26
26
|
messageDescriptor: messages.preview_unavailable
|
|
27
27
|
}));
|
|
28
28
|
};
|
|
29
|
-
export var
|
|
29
|
+
export var FailedToLoad = function FailedToLoad(props) {
|
|
30
30
|
return /*#__PURE__*/React.createElement(IconMessage, _extends({}, props, {
|
|
31
|
-
messageDescriptor: messages.
|
|
32
|
-
|
|
31
|
+
messageDescriptor: messages.failed_to_load
|
|
32
|
+
}));
|
|
33
|
+
};
|
|
34
|
+
export var FailedToUpload = function FailedToUpload(props) {
|
|
35
|
+
return /*#__PURE__*/React.createElement(IconMessage, _extends({}, props, {
|
|
36
|
+
messageDescriptor: messages.failed_to_upload
|
|
33
37
|
}));
|
|
34
38
|
};
|
|
35
39
|
export var PreviewCurrentlyUnavailable = function PreviewCurrentlyUnavailable(props) {
|
|
@@ -1,122 +1,27 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
-
import
|
|
3
|
-
import _createClass from "@babel/runtime/helpers/createClass";
|
|
4
|
-
import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
|
|
5
|
-
import _inherits from "@babel/runtime/helpers/inherits";
|
|
6
|
-
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
7
|
-
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
8
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
9
|
-
|
|
10
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
11
|
-
|
|
12
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
13
|
-
|
|
14
|
-
import React from 'react';
|
|
2
|
+
import React, { useEffect } from 'react';
|
|
15
3
|
import { MediaImage } from '@atlaskit/media-ui';
|
|
16
|
-
import { withAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
17
|
-
import { fireMediaCardEvent, RenderEventAction, getRenderSucceededEventPayload, getRenderFailedFileUriPayload, getRenderFailedExternalUriPayload } from '../../../utils/analytics';
|
|
18
|
-
import { withFileAttributes } from '../../../utils/fileAttributesContext';
|
|
19
4
|
import { resizeModeToMediaImageProps } from '../../../utils/resizeModeToMediaImageProps';
|
|
20
|
-
export var
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
5
|
+
export var ImageRenderer = function ImageRenderer(_ref) {
|
|
6
|
+
var dataURI = _ref.dataURI,
|
|
7
|
+
previewOrientation = _ref.previewOrientation,
|
|
8
|
+
alt = _ref.alt,
|
|
9
|
+
resizeMode = _ref.resizeMode,
|
|
10
|
+
onImageLoad = _ref.onImageLoad,
|
|
11
|
+
onImageError = _ref.onImageError,
|
|
12
|
+
onDisplayImage = _ref.onDisplayImage,
|
|
13
|
+
mediaType = _ref.mediaType;
|
|
14
|
+
useEffect(function () {
|
|
15
|
+
// TODO: trigger accordingly with the succeeded event. This could be a breaking change
|
|
16
|
+
if (mediaType === 'image' && onDisplayImage) {
|
|
17
|
+
onDisplayImage();
|
|
32
18
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (fileAttributes && _this.shouldFireEvent(RenderEventAction.SUCCEEDED)) {
|
|
43
|
-
var timeElapsedTillSucceeded = performance.now();
|
|
44
|
-
var durationSinceCommenced = timeElapsedTillCommenced && timeElapsedTillSucceeded - timeElapsedTillCommenced;
|
|
45
|
-
var performanceAttributes = {
|
|
46
|
-
overall: {
|
|
47
|
-
durationSincePageStart: timeElapsedTillSucceeded,
|
|
48
|
-
durationSinceCommenced: durationSinceCommenced
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
fireMediaCardEvent(getRenderSucceededEventPayload(fileAttributes, performanceAttributes), createAnalyticsEvent);
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
_defineProperty(_assertThisInitialized(_this), "onImageError", function () {
|
|
56
|
-
var _this$props2 = _this.props,
|
|
57
|
-
onImageError = _this$props2.onImageError,
|
|
58
|
-
fileAttributes = _this$props2.fileAttributes;
|
|
59
|
-
onImageError && onImageError();
|
|
60
|
-
|
|
61
|
-
if (fileAttributes && _this.shouldFireEvent(RenderEventAction.FAILED)) {
|
|
62
|
-
var _this$props3 = _this.props,
|
|
63
|
-
createAnalyticsEvent = _this$props3.createAnalyticsEvent,
|
|
64
|
-
mediaItemType = _this$props3.mediaItemType,
|
|
65
|
-
timeElapsedTillCommenced = _this$props3.timeElapsedTillCommenced;
|
|
66
|
-
var timeElapsedTillFailed = performance.now();
|
|
67
|
-
var durationSinceCommenced = timeElapsedTillCommenced && timeElapsedTillFailed - timeElapsedTillCommenced;
|
|
68
|
-
var performanceAttributes = {
|
|
69
|
-
overall: {
|
|
70
|
-
durationSincePageStart: timeElapsedTillFailed,
|
|
71
|
-
durationSinceCommenced: durationSinceCommenced
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
if (mediaItemType === 'file') {
|
|
76
|
-
fireMediaCardEvent(getRenderFailedFileUriPayload(fileAttributes, performanceAttributes), createAnalyticsEvent);
|
|
77
|
-
} else if (mediaItemType === 'external-image') {
|
|
78
|
-
fireMediaCardEvent(getRenderFailedExternalUriPayload(fileAttributes, performanceAttributes), createAnalyticsEvent);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
_defineProperty(_assertThisInitialized(_this), "shouldFireEvent", function (action) {
|
|
84
|
-
return !_this.lastAnalyticsAction || _this.lastAnalyticsAction !== action;
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
return _this;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
_createClass(ImageRendererBase, [{
|
|
91
|
-
key: "componentDidMount",
|
|
92
|
-
value: function componentDidMount() {
|
|
93
|
-
// TODO: trigger accordingly with the succeeded event. This could be a breaking change
|
|
94
|
-
var _this$props4 = this.props,
|
|
95
|
-
onDisplayImage = _this$props4.onDisplayImage,
|
|
96
|
-
mediaType = _this$props4.mediaType;
|
|
97
|
-
|
|
98
|
-
if (mediaType === 'image' && onDisplayImage) {
|
|
99
|
-
onDisplayImage();
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}, {
|
|
103
|
-
key: "render",
|
|
104
|
-
value: function render() {
|
|
105
|
-
var _this$props5 = this.props,
|
|
106
|
-
dataURI = _this$props5.dataURI,
|
|
107
|
-
previewOrientation = _this$props5.previewOrientation,
|
|
108
|
-
alt = _this$props5.alt,
|
|
109
|
-
resizeMode = _this$props5.resizeMode;
|
|
110
|
-
return /*#__PURE__*/React.createElement(MediaImage, _extends({
|
|
111
|
-
dataURI: dataURI,
|
|
112
|
-
alt: alt,
|
|
113
|
-
previewOrientation: previewOrientation,
|
|
114
|
-
onImageLoad: this.onImageLoad,
|
|
115
|
-
onImageError: this.onImageError
|
|
116
|
-
}, resizeModeToMediaImageProps(resizeMode)));
|
|
117
|
-
}
|
|
118
|
-
}]);
|
|
119
|
-
|
|
120
|
-
return ImageRendererBase;
|
|
121
|
-
}(React.Component);
|
|
122
|
-
export var ImageRenderer = withAnalyticsEvents()(withFileAttributes(ImageRendererBase));
|
|
19
|
+
}, [mediaType, onDisplayImage]);
|
|
20
|
+
return /*#__PURE__*/React.createElement(MediaImage, _extends({
|
|
21
|
+
dataURI: dataURI,
|
|
22
|
+
alt: alt,
|
|
23
|
+
previewOrientation: previewOrientation,
|
|
24
|
+
onImageLoad: onImageLoad,
|
|
25
|
+
onImageError: onImageError
|
|
26
|
+
}, resizeModeToMediaImageProps(resizeMode)));
|
|
27
|
+
};
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { TitleBoxWrapper, ErrorMessageWrapper } from './styled';
|
|
3
3
|
import EditorWarningIcon from '@atlaskit/icon/glyph/editor/warning';
|
|
4
|
+
import { messages } from '@atlaskit/media-ui';
|
|
4
5
|
import { R300 } from '@atlaskit/theme/colors';
|
|
5
|
-
import {
|
|
6
|
+
import { FormattedMessage } from 'react-intl';
|
|
6
7
|
export var FailedTitleBox = function FailedTitleBox(_ref) {
|
|
7
|
-
var breakpoint = _ref.breakpoint
|
|
8
|
+
var breakpoint = _ref.breakpoint,
|
|
9
|
+
_ref$customMessage = _ref.customMessage,
|
|
10
|
+
customMessage = _ref$customMessage === void 0 ? messages.failed_to_load : _ref$customMessage;
|
|
8
11
|
return /*#__PURE__*/React.createElement(TitleBoxWrapper, {
|
|
9
12
|
breakpoint: breakpoint
|
|
10
13
|
}, /*#__PURE__*/React.createElement(ErrorMessageWrapper, null, /*#__PURE__*/React.createElement(EditorWarningIcon, {
|
|
11
14
|
label: 'Warning',
|
|
12
15
|
size: 'small',
|
|
13
16
|
primaryColor: R300
|
|
14
|
-
}),
|
|
17
|
+
}), /*#__PURE__*/React.createElement(FormattedMessage, customMessage)));
|
|
15
18
|
};
|
|
@@ -2,14 +2,6 @@ import { getMediaClientErrorReason, isRequestError } from '@atlaskit/media-clien
|
|
|
2
2
|
import { ANALYTICS_MEDIA_CHANNEL } from '@atlaskit/media-common';
|
|
3
3
|
import { createAndFireEvent } from '@atlaskit/analytics-next';
|
|
4
4
|
import { isMediaCardError } from '../errors';
|
|
5
|
-
export var RenderEventAction;
|
|
6
|
-
|
|
7
|
-
(function (RenderEventAction) {
|
|
8
|
-
RenderEventAction["COMMENCED"] = "commenced";
|
|
9
|
-
RenderEventAction["SUCCEEDED"] = "succeeded";
|
|
10
|
-
RenderEventAction["FAILED"] = "failed";
|
|
11
|
-
})(RenderEventAction || (RenderEventAction = {}));
|
|
12
|
-
|
|
13
5
|
export var getFileAttributes = function getFileAttributes(metadata, fileStatus) {
|
|
14
6
|
return {
|
|
15
7
|
fileMediatype: metadata.mediaType,
|
|
@@ -34,7 +26,7 @@ export var getRenderPreviewableCardPayload = function getRenderPreviewableCardPa
|
|
|
34
26
|
export var getRenderCommencedEventPayload = function getRenderCommencedEventPayload(fileAttributes, performanceAttributes) {
|
|
35
27
|
return {
|
|
36
28
|
eventType: 'operational',
|
|
37
|
-
action:
|
|
29
|
+
action: 'commenced',
|
|
38
30
|
actionSubject: 'mediaCardRender',
|
|
39
31
|
attributes: {
|
|
40
32
|
fileAttributes: fileAttributes,
|
|
@@ -45,7 +37,7 @@ export var getRenderCommencedEventPayload = function getRenderCommencedEventPayl
|
|
|
45
37
|
export var getRenderSucceededEventPayload = function getRenderSucceededEventPayload(fileAttributes, performanceAttributes) {
|
|
46
38
|
return {
|
|
47
39
|
eventType: 'operational',
|
|
48
|
-
action:
|
|
40
|
+
action: 'succeeded',
|
|
49
41
|
actionSubject: 'mediaCardRender',
|
|
50
42
|
attributes: {
|
|
51
43
|
fileAttributes: fileAttributes,
|
|
@@ -54,33 +46,10 @@ export var getRenderSucceededEventPayload = function getRenderSucceededEventPayl
|
|
|
54
46
|
}
|
|
55
47
|
};
|
|
56
48
|
};
|
|
57
|
-
export var getFailedFileUriFailReason = function getFailedFileUriFailReason(fileStatus) {
|
|
58
|
-
if (!fileStatus) {
|
|
59
|
-
// This fail reason will come from a bug, most likely.
|
|
60
|
-
return "unknown-uri";
|
|
61
|
-
} else if (fileStatus === 'uploading') {
|
|
62
|
-
return 'local-uri';
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return 'remote-uri';
|
|
66
|
-
};
|
|
67
|
-
export var getRenderFailedFileUriPayload = function getRenderFailedFileUriPayload(fileAttributes, performanceAttributes) {
|
|
68
|
-
return {
|
|
69
|
-
eventType: 'operational',
|
|
70
|
-
action: RenderEventAction.FAILED,
|
|
71
|
-
actionSubject: 'mediaCardRender',
|
|
72
|
-
attributes: {
|
|
73
|
-
fileAttributes: fileAttributes,
|
|
74
|
-
performanceAttributes: performanceAttributes,
|
|
75
|
-
status: 'fail',
|
|
76
|
-
failReason: getFailedFileUriFailReason(fileAttributes.fileStatus)
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
};
|
|
80
49
|
export var getRenderFailedExternalUriPayload = function getRenderFailedExternalUriPayload(fileAttributes, performanceAttributes) {
|
|
81
50
|
return {
|
|
82
51
|
eventType: 'operational',
|
|
83
|
-
action:
|
|
52
|
+
action: 'failed',
|
|
84
53
|
actionSubject: 'mediaCardRender',
|
|
85
54
|
attributes: {
|
|
86
55
|
fileAttributes: fileAttributes,
|
|
@@ -123,7 +92,7 @@ export var getRenderErrorRequestMetadata = function getRenderErrorRequestMetadat
|
|
|
123
92
|
export var getRenderErrorEventPayload = function getRenderErrorEventPayload(fileAttributes, performanceAttributes, error) {
|
|
124
93
|
return {
|
|
125
94
|
eventType: 'operational',
|
|
126
|
-
action:
|
|
95
|
+
action: 'failed',
|
|
127
96
|
actionSubject: 'mediaCardRender',
|
|
128
97
|
attributes: {
|
|
129
98
|
fileAttributes: fileAttributes,
|
|
@@ -139,7 +108,7 @@ export var getRenderErrorEventPayload = function getRenderErrorEventPayload(file
|
|
|
139
108
|
export var getRenderFailedFileStatusPayload = function getRenderFailedFileStatusPayload(fileAttributes, performanceAttributes) {
|
|
140
109
|
return {
|
|
141
110
|
eventType: 'operational',
|
|
142
|
-
action:
|
|
111
|
+
action: 'failed',
|
|
143
112
|
actionSubject: 'mediaCardRender',
|
|
144
113
|
attributes: {
|
|
145
114
|
fileAttributes: fileAttributes,
|
|
@@ -20,7 +20,7 @@ export var canCompareDimension = function canCompareDimension(current, next) {
|
|
|
20
20
|
return false;
|
|
21
21
|
};
|
|
22
22
|
export var isBigger = function isBigger(current, next) {
|
|
23
|
-
if (canCompareDimension(current.width, next.width) && canCompareDimension(current.height, next.height)) {
|
|
23
|
+
if (!!current && !!next && canCompareDimension(current.width, next.width) && canCompareDimension(current.height, next.height)) {
|
|
24
24
|
var nextIsHigher = parseInt("".concat(current.width), 10) < parseInt("".concat(next.width), 10);
|
|
25
25
|
var nextIsWider = parseInt("".concat(current.height), 10) < parseInt("".concat(next.height), 10);
|
|
26
26
|
return nextIsHigher || nextIsWider;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isErrorFileState } from '@atlaskit/media-client';
|
|
1
|
+
import { isErrorFileState, isFileIdentifier } from '@atlaskit/media-client';
|
|
2
2
|
|
|
3
3
|
var getProcessingStatusFromFileState = function getProcessingStatusFromFileState(status) {
|
|
4
4
|
switch (status) {
|
|
@@ -13,8 +13,8 @@ var getProcessingStatusFromFileState = function getProcessingStatusFromFileState
|
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
return
|
|
16
|
+
var getFileDetailsFromFileState = function getFileDetailsFromFileState(state) {
|
|
17
|
+
return {
|
|
18
18
|
id: state.id,
|
|
19
19
|
name: state.name,
|
|
20
20
|
size: state.size,
|
|
@@ -22,7 +22,15 @@ export var getFileDetails = function getFileDetails(state) {
|
|
|
22
22
|
createdAt: state.createdAt,
|
|
23
23
|
mediaType: state.mediaType,
|
|
24
24
|
processingStatus: getProcessingStatusFromFileState(state.status)
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export var getFileDetails = function getFileDetails(identifier, fileState) {
|
|
29
|
+
return isFileIdentifier(identifier) ? fileState && !isErrorFileState(fileState) ? getFileDetailsFromFileState(fileState) : {
|
|
30
|
+
id: identifier.id
|
|
25
31
|
} : {
|
|
26
|
-
id:
|
|
32
|
+
id: identifier.mediaItemType,
|
|
33
|
+
name: identifier.name || identifier.dataURI,
|
|
34
|
+
mediaType: 'image'
|
|
27
35
|
};
|
|
28
36
|
};
|
|
@@ -73,6 +73,12 @@ export var ObjectURLCache = /*#__PURE__*/function () {
|
|
|
73
73
|
value: function set(key, value) {
|
|
74
74
|
this.cache.set(key, value);
|
|
75
75
|
}
|
|
76
|
+
}, {
|
|
77
|
+
key: "remove",
|
|
78
|
+
value: function remove(key) {
|
|
79
|
+
var removed = this.cache.remove(key);
|
|
80
|
+
removed && URL.revokeObjectURL(removed.dataURI);
|
|
81
|
+
}
|
|
76
82
|
}]);
|
|
77
83
|
|
|
78
84
|
return ObjectURLCache;
|
|
@@ -5,7 +5,7 @@ export var shouldDisplayImageThumbnail = function shouldDisplayImageThumbnail(ca
|
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
if (dataURI) {
|
|
8
|
-
return mediaItemType === 'external-image' || mimeType && isMimeTypeSupportedByBrowser(mimeType) || cardStatus === 'complete';
|
|
8
|
+
return mediaItemType === 'external-image' || mimeType && isMimeTypeSupportedByBrowser(mimeType) || cardStatus === 'complete' || cardStatus === 'loading-preview';
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
return false;
|