@atlaskit/media-card 70.9.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.
Files changed (181) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/cjs/errors.js +109 -6
  3. package/dist/cjs/files/cardImageView/index.js +58 -89
  4. package/dist/cjs/files/index.js +0 -6
  5. package/dist/cjs/index.js +16 -6
  6. package/dist/cjs/root/card/cardAnalytics.js +33 -19
  7. package/dist/cjs/root/card/cardConstants.js +8 -0
  8. package/dist/cjs/root/card/cardSSRView.js +114 -0
  9. package/dist/cjs/root/card/cardState.js +50 -0
  10. package/dist/cjs/root/card/getCardPreview/cache.js +49 -0
  11. package/dist/cjs/root/card/getCardPreview/filePreviewStatus.js +50 -0
  12. package/dist/cjs/root/card/getCardPreview/helpers.js +215 -0
  13. package/dist/cjs/root/card/getCardPreview/index.js +225 -0
  14. package/dist/cjs/root/card/getCardStatus.js +16 -21
  15. package/dist/cjs/root/card/index.js +339 -398
  16. package/dist/cjs/root/cardView.js +108 -56
  17. package/dist/cjs/root/index.js +9 -1
  18. package/dist/cjs/root/inline/loader.js +22 -21
  19. package/dist/cjs/root/inline/{inlineMediaCard.js → mediaInlineCard.js} +66 -24
  20. package/dist/cjs/root/inlinePlayer.js +5 -15
  21. package/dist/cjs/root/ui/Breakpoint.js +13 -0
  22. package/dist/cjs/root/ui/common.js +5 -11
  23. package/dist/cjs/root/ui/iconMessage/index.js +17 -9
  24. package/dist/cjs/root/ui/imageRenderer/imageRenderer.js +32 -115
  25. package/dist/cjs/root/ui/loadingRateLimited/loadingRateLimited.js +2 -2
  26. package/dist/cjs/root/ui/progressBar/progressBar.js +2 -2
  27. package/dist/cjs/root/ui/progressBar/styled.js +3 -1
  28. package/dist/cjs/root/ui/styled.js +17 -80
  29. package/dist/cjs/root/ui/styledSSR.js +108 -0
  30. package/dist/cjs/root/ui/titleBox/failedTitleBox.js +7 -3
  31. package/dist/cjs/root/ui/titleBox/styled.js +3 -1
  32. package/dist/cjs/utils/analytics.js +26 -43
  33. package/dist/cjs/utils/dimensionComparer.js +1 -1
  34. package/dist/cjs/utils/document.js +12 -0
  35. package/dist/cjs/utils/getDataURIDimension.js +13 -2
  36. package/dist/cjs/utils/metadata.js +11 -3
  37. package/dist/cjs/utils/objectURLCache.js +6 -0
  38. package/dist/cjs/utils/resizeModeToMediaImageProps.js +13 -0
  39. package/dist/cjs/utils/shouldDisplayImageThumbnail.js +1 -1
  40. package/dist/cjs/utils/videoSnapshot.js +45 -0
  41. package/dist/cjs/version.json +1 -1
  42. package/dist/es2019/errors.js +52 -2
  43. package/dist/es2019/files/cardImageView/index.js +12 -46
  44. package/dist/es2019/files/index.js +1 -1
  45. package/dist/es2019/index.js +3 -3
  46. package/dist/es2019/root/card/cardAnalytics.js +23 -17
  47. package/dist/es2019/root/card/cardConstants.js +1 -0
  48. package/dist/es2019/root/card/cardSSRView.js +93 -0
  49. package/dist/es2019/root/card/cardState.js +26 -0
  50. package/dist/es2019/root/card/getCardPreview/cache.js +29 -0
  51. package/dist/es2019/root/card/getCardPreview/filePreviewStatus.js +35 -0
  52. package/dist/es2019/root/card/getCardPreview/helpers.js +83 -0
  53. package/dist/es2019/root/card/getCardPreview/index.js +129 -0
  54. package/dist/es2019/root/card/getCardStatus.js +11 -15
  55. package/dist/es2019/root/card/index.js +292 -276
  56. package/dist/es2019/root/cardView.js +107 -53
  57. package/dist/es2019/root/index.js +2 -1
  58. package/dist/es2019/root/inline/loader.js +16 -15
  59. package/dist/es2019/root/inline/mediaInlineCard.js +127 -0
  60. package/dist/es2019/root/inlinePlayer.js +5 -13
  61. package/dist/es2019/root/ui/Breakpoint.js +6 -0
  62. package/dist/es2019/root/ui/common.js +1 -7
  63. package/dist/es2019/root/ui/iconMessage/index.js +10 -6
  64. package/dist/es2019/root/ui/imageRenderer/imageRenderer.js +22 -74
  65. package/dist/es2019/root/ui/loadingRateLimited/loadingRateLimited.js +1 -1
  66. package/dist/es2019/root/ui/progressBar/progressBar.js +1 -1
  67. package/dist/es2019/root/ui/progressBar/styled.js +2 -1
  68. package/dist/es2019/root/ui/styled.js +4 -64
  69. package/dist/es2019/root/ui/styledSSR.js +93 -0
  70. package/dist/es2019/root/ui/titleBox/failedTitleBox.js +5 -3
  71. package/dist/es2019/root/ui/titleBox/styled.js +2 -1
  72. package/dist/es2019/utils/analytics.js +29 -40
  73. package/dist/es2019/utils/dimensionComparer.js +1 -1
  74. package/dist/es2019/utils/document.js +1 -0
  75. package/dist/es2019/utils/getDataURIDimension.js +8 -0
  76. package/dist/es2019/utils/metadata.js +12 -4
  77. package/dist/es2019/utils/objectURLCache.js +5 -0
  78. package/dist/es2019/utils/resizeModeToMediaImageProps.js +6 -0
  79. package/dist/es2019/utils/shouldDisplayImageThumbnail.js +1 -1
  80. package/dist/es2019/utils/videoSnapshot.js +7 -0
  81. package/dist/es2019/version.json +1 -1
  82. package/dist/esm/errors.js +85 -2
  83. package/dist/esm/files/cardImageView/index.js +55 -87
  84. package/dist/esm/files/index.js +1 -1
  85. package/dist/esm/index.js +3 -3
  86. package/dist/esm/root/card/cardAnalytics.js +23 -18
  87. package/dist/esm/root/card/cardConstants.js +1 -0
  88. package/dist/esm/root/card/cardSSRView.js +92 -0
  89. package/dist/esm/root/card/cardState.js +32 -0
  90. package/dist/esm/root/card/getCardPreview/cache.js +33 -0
  91. package/dist/esm/root/card/getCardPreview/filePreviewStatus.js +35 -0
  92. package/dist/esm/root/card/getCardPreview/helpers.js +194 -0
  93. package/dist/esm/root/card/getCardPreview/index.js +174 -0
  94. package/dist/esm/root/card/getCardStatus.js +13 -17
  95. package/dist/esm/root/card/index.js +349 -401
  96. package/dist/esm/root/cardView.js +105 -52
  97. package/dist/esm/root/index.js +2 -1
  98. package/dist/esm/root/inline/loader.js +23 -22
  99. package/dist/esm/root/inline/{inlineMediaCard.js → mediaInlineCard.js} +62 -22
  100. package/dist/esm/root/inlinePlayer.js +5 -13
  101. package/dist/esm/root/ui/Breakpoint.js +6 -0
  102. package/dist/esm/root/ui/common.js +1 -7
  103. package/dist/esm/root/ui/iconMessage/index.js +12 -7
  104. package/dist/esm/root/ui/imageRenderer/imageRenderer.js +24 -106
  105. package/dist/esm/root/ui/loadingRateLimited/loadingRateLimited.js +1 -1
  106. package/dist/esm/root/ui/progressBar/progressBar.js +1 -1
  107. package/dist/esm/root/ui/progressBar/styled.js +2 -1
  108. package/dist/esm/root/ui/styled.js +13 -61
  109. package/dist/esm/root/ui/styledSSR.js +76 -0
  110. package/dist/esm/root/ui/titleBox/failedTitleBox.js +6 -3
  111. package/dist/esm/root/ui/titleBox/styled.js +2 -1
  112. package/dist/esm/utils/analytics.js +22 -35
  113. package/dist/esm/utils/dimensionComparer.js +1 -1
  114. package/dist/esm/utils/document.js +3 -0
  115. package/dist/esm/utils/getDataURIDimension.js +8 -0
  116. package/dist/esm/utils/metadata.js +12 -4
  117. package/dist/esm/utils/objectURLCache.js +6 -0
  118. package/dist/esm/utils/resizeModeToMediaImageProps.js +6 -0
  119. package/dist/esm/utils/shouldDisplayImageThumbnail.js +1 -1
  120. package/dist/esm/utils/videoSnapshot.js +31 -0
  121. package/dist/esm/version.json +1 -1
  122. package/dist/types/__tests_external__/page-objects/MediaCard.d.ts +4 -3
  123. package/dist/types/errors.d.ts +24 -2
  124. package/dist/types/files/cardImageView/index.d.ts +5 -12
  125. package/dist/types/files/cardImageView/styled.d.ts +1 -1
  126. package/dist/types/files/index.d.ts +1 -1
  127. package/dist/types/index.d.ts +9 -12
  128. package/dist/types/root/card/cardAnalytics.d.ts +5 -7
  129. package/dist/types/root/card/cardConstants.d.ts +1 -0
  130. package/dist/types/root/card/cardSSRView.d.ts +13 -0
  131. package/dist/types/root/card/cardState.d.ts +5 -0
  132. package/dist/types/root/card/getCardPreview/cache.d.ts +18 -0
  133. package/dist/types/root/card/getCardPreview/filePreviewStatus.d.ts +5 -0
  134. package/dist/types/root/card/getCardPreview/helpers.d.ts +9 -0
  135. package/dist/types/root/card/getCardPreview/index.d.ts +44 -0
  136. package/dist/types/root/card/getCardStatus.d.ts +4 -14
  137. package/dist/types/root/card/index.d.ts +17 -21
  138. package/dist/types/root/cardView.d.ts +12 -8
  139. package/dist/types/root/index.d.ts +1 -0
  140. package/dist/types/root/inline/loader.d.ts +8 -8
  141. package/dist/types/root/inline/{inlineMediaCard.d.ts → mediaInlineCard.d.ts} +4 -4
  142. package/dist/types/root/inlinePlayer.d.ts +1 -1
  143. package/dist/types/root/ui/Breakpoint.d.ts +4 -0
  144. package/dist/types/root/ui/common.d.ts +1 -4
  145. package/dist/types/root/ui/iconMessage/index.d.ts +7 -2
  146. package/dist/types/root/ui/iconWrapper/styled.d.ts +1 -1
  147. package/dist/types/root/ui/imageRenderer/imageRenderer.d.ts +2 -16
  148. package/dist/types/root/ui/loadingRateLimited/loadingRateLimited.d.ts +1 -1
  149. package/dist/types/root/ui/loadingRateLimited/styled.d.ts +1 -1
  150. package/dist/types/root/ui/progressBar/progressBar.d.ts +1 -1
  151. package/dist/types/root/ui/progressBar/styled.d.ts +1 -1
  152. package/dist/types/root/ui/styled.d.ts +3 -10
  153. package/dist/types/root/ui/styledSSR.d.ts +16 -0
  154. package/dist/types/root/ui/titleBox/failedTitleBox.d.ts +3 -1
  155. package/dist/types/root/ui/titleBox/styled.d.ts +1 -1
  156. package/dist/types/root/ui/titleBox/titleBox.d.ts +1 -1
  157. package/dist/types/types.d.ts +15 -1
  158. package/dist/types/utils/analytics.d.ts +20 -21
  159. package/dist/types/utils/cardDimensions.d.ts +5 -1
  160. package/dist/types/utils/dimensionComparer.d.ts +1 -1
  161. package/dist/types/utils/document.d.ts +2 -0
  162. package/dist/types/utils/getDataURIDimension.d.ts +3 -1
  163. package/dist/types/utils/index.d.ts +1 -0
  164. package/dist/types/utils/lazyContent/styled.d.ts +1 -1
  165. package/dist/types/utils/lightCards/types.d.ts +1 -1
  166. package/dist/types/utils/metadata.d.ts +2 -2
  167. package/dist/types/utils/objectURLCache.d.ts +2 -1
  168. package/dist/types/utils/resizeModeToMediaImageProps.d.ts +5 -0
  169. package/dist/types/utils/shouldDisplayImageThumbnail.d.ts +1 -1
  170. package/dist/types/utils/videoSnapshot.d.ts +1 -0
  171. package/example-helpers/index.tsx +21 -0
  172. package/package.json +19 -17
  173. package/dist/cjs/root/card/getCardPreview.js +0 -173
  174. package/dist/cjs/utils/fileAttributesContext.js +0 -40
  175. package/dist/es2019/root/card/getCardPreview.js +0 -86
  176. package/dist/es2019/root/inline/inlineMediaCard.js +0 -92
  177. package/dist/es2019/utils/fileAttributesContext.js +0 -19
  178. package/dist/esm/root/card/getCardPreview.js +0 -153
  179. package/dist/esm/utils/fileAttributesContext.js +0 -18
  180. package/dist/types/root/card/getCardPreview.d.ts +0 -8
  181. package/dist/types/utils/fileAttributesContext.d.ts +0 -10
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.fireMediaCardEvent = fireMediaCardEvent;
7
- exports.createAndFireMediaCardEvent = exports.getCopiedFilePayload = exports.getRenderFailedFileStatusPayload = exports.getRenderErrorEventPayload = exports.getRenderErrorRequestMetadata = exports.getRenderErrorErrorDetail = exports.getRenderErrorErrorReason = exports.getRenderErrorFailReason = exports.getRenderFailedExternalUriPayload = exports.getRenderFailedFileUriPayload = exports.getFailedFileUriFailReason = exports.getRenderSucceededEventPayload = exports.getRenderCommencedEventPayload = exports.getFileAttributes = exports.RenderEventAction = void 0;
7
+ exports.createAndFireMediaCardEvent = exports.getCopiedFilePayload = exports.getRenderFailedFileStatusPayload = exports.getRenderErrorEventPayload = exports.getRenderErrorRequestMetadata = exports.getRenderErrorErrorDetail = exports.getRenderErrorErrorReason = exports.getRenderErrorFailReason = exports.getRenderFailedExternalUriPayload = exports.getRenderSucceededEventPayload = exports.getRenderCommencedEventPayload = exports.getRenderPreviewableCardPayload = exports.getFileAttributes = void 0;
8
8
 
9
9
  var _mediaClient = require("@atlaskit/media-client");
10
10
 
@@ -14,15 +14,6 @@ var _analyticsNext = require("@atlaskit/analytics-next");
14
14
 
15
15
  var _errors = require("../errors");
16
16
 
17
- var RenderEventAction;
18
- exports.RenderEventAction = RenderEventAction;
19
-
20
- (function (RenderEventAction) {
21
- RenderEventAction["COMMENCED"] = "commenced";
22
- RenderEventAction["SUCCEEDED"] = "succeeded";
23
- RenderEventAction["FAILED"] = "failed";
24
- })(RenderEventAction || (exports.RenderEventAction = RenderEventAction = {}));
25
-
26
17
  var getFileAttributes = function getFileAttributes(metadata, fileStatus) {
27
18
  return {
28
19
  fileMediatype: metadata.mediaType,
@@ -35,68 +26,58 @@ var getFileAttributes = function getFileAttributes(metadata, fileStatus) {
35
26
 
36
27
  exports.getFileAttributes = getFileAttributes;
37
28
 
38
- var getRenderCommencedEventPayload = function getRenderCommencedEventPayload(fileAttributes) {
29
+ var getRenderPreviewableCardPayload = function getRenderPreviewableCardPayload(fileAttributes) {
39
30
  return {
40
- eventType: 'operational',
41
- action: RenderEventAction.COMMENCED,
42
- actionSubject: 'mediaCardRender',
31
+ eventType: 'screen',
32
+ action: 'viewed',
33
+ actionSubject: 'mediaCardRenderScreen',
34
+ name: 'mediaCardRenderScreen',
43
35
  attributes: {
36
+ type: fileAttributes.fileMediatype,
44
37
  fileAttributes: fileAttributes
45
38
  }
46
39
  };
47
40
  };
48
41
 
49
- exports.getRenderCommencedEventPayload = getRenderCommencedEventPayload;
42
+ exports.getRenderPreviewableCardPayload = getRenderPreviewableCardPayload;
50
43
 
51
- var getRenderSucceededEventPayload = function getRenderSucceededEventPayload(fileAttributes) {
44
+ var getRenderCommencedEventPayload = function getRenderCommencedEventPayload(fileAttributes, performanceAttributes) {
52
45
  return {
53
46
  eventType: 'operational',
54
- action: RenderEventAction.SUCCEEDED,
47
+ action: 'commenced',
55
48
  actionSubject: 'mediaCardRender',
56
49
  attributes: {
57
50
  fileAttributes: fileAttributes,
58
- status: 'success'
51
+ performanceAttributes: performanceAttributes
59
52
  }
60
53
  };
61
54
  };
62
55
 
63
- exports.getRenderSucceededEventPayload = getRenderSucceededEventPayload;
64
-
65
- var getFailedFileUriFailReason = function getFailedFileUriFailReason(fileStatus) {
66
- if (!fileStatus) {
67
- // This fail reason will come from a bug, most likely.
68
- return "unknown-uri";
69
- } else if (fileStatus === 'uploading') {
70
- return 'local-uri';
71
- }
72
-
73
- return 'remote-uri';
74
- };
75
-
76
- exports.getFailedFileUriFailReason = getFailedFileUriFailReason;
56
+ exports.getRenderCommencedEventPayload = getRenderCommencedEventPayload;
77
57
 
78
- var getRenderFailedFileUriPayload = function getRenderFailedFileUriPayload(fileAttributes) {
58
+ var getRenderSucceededEventPayload = function getRenderSucceededEventPayload(fileAttributes, performanceAttributes) {
79
59
  return {
80
60
  eventType: 'operational',
81
- action: RenderEventAction.FAILED,
61
+ action: 'succeeded',
82
62
  actionSubject: 'mediaCardRender',
83
63
  attributes: {
84
64
  fileAttributes: fileAttributes,
85
- status: 'fail',
86
- failReason: getFailedFileUriFailReason(fileAttributes.fileStatus)
65
+ performanceAttributes: performanceAttributes,
66
+ status: 'success'
87
67
  }
88
68
  };
89
69
  };
90
70
 
91
- exports.getRenderFailedFileUriPayload = getRenderFailedFileUriPayload;
71
+ exports.getRenderSucceededEventPayload = getRenderSucceededEventPayload;
92
72
 
93
- var getRenderFailedExternalUriPayload = function getRenderFailedExternalUriPayload(fileAttributes) {
73
+ var getRenderFailedExternalUriPayload = function getRenderFailedExternalUriPayload(fileAttributes, performanceAttributes) {
94
74
  return {
95
75
  eventType: 'operational',
96
- action: RenderEventAction.FAILED,
76
+ action: 'failed',
97
77
  actionSubject: 'mediaCardRender',
98
78
  attributes: {
99
79
  fileAttributes: fileAttributes,
80
+ performanceAttributes: performanceAttributes,
100
81
  status: 'fail',
101
82
  failReason: 'external-uri'
102
83
  }
@@ -147,13 +128,14 @@ var getRenderErrorRequestMetadata = function getRenderErrorRequestMetadata(error
147
128
 
148
129
  exports.getRenderErrorRequestMetadata = getRenderErrorRequestMetadata;
149
130
 
150
- var getRenderErrorEventPayload = function getRenderErrorEventPayload(fileAttributes, error) {
131
+ var getRenderErrorEventPayload = function getRenderErrorEventPayload(fileAttributes, performanceAttributes, error) {
151
132
  return {
152
133
  eventType: 'operational',
153
- action: RenderEventAction.FAILED,
134
+ action: 'failed',
154
135
  actionSubject: 'mediaCardRender',
155
136
  attributes: {
156
137
  fileAttributes: fileAttributes,
138
+ performanceAttributes: performanceAttributes,
157
139
  status: 'fail',
158
140
  failReason: getRenderErrorFailReason(error),
159
141
  error: getRenderErrorErrorReason(error),
@@ -165,13 +147,14 @@ var getRenderErrorEventPayload = function getRenderErrorEventPayload(fileAttribu
165
147
 
166
148
  exports.getRenderErrorEventPayload = getRenderErrorEventPayload;
167
149
 
168
- var getRenderFailedFileStatusPayload = function getRenderFailedFileStatusPayload(fileAttributes) {
150
+ var getRenderFailedFileStatusPayload = function getRenderFailedFileStatusPayload(fileAttributes, performanceAttributes) {
169
151
  return {
170
152
  eventType: 'operational',
171
- action: RenderEventAction.FAILED,
153
+ action: 'failed',
172
154
  actionSubject: 'mediaCardRender',
173
155
  attributes: {
174
156
  fileAttributes: fileAttributes,
157
+ performanceAttributes: performanceAttributes,
175
158
  status: 'fail',
176
159
  failReason: 'failed-processing'
177
160
  }
@@ -32,7 +32,7 @@ var canCompareDimension = function canCompareDimension(current, next) {
32
32
  exports.canCompareDimension = canCompareDimension;
33
33
 
34
34
  var isBigger = function isBigger(current, next) {
35
- if (canCompareDimension(current.width, next.width) && canCompareDimension(current.height, next.height)) {
35
+ if (!!current && !!next && canCompareDimension(current.width, next.width) && canCompareDimension(current.height, next.height)) {
36
36
  var nextIsHigher = parseInt("".concat(current.width), 10) < parseInt("".concat(next.width), 10);
37
37
  var nextIsWider = parseInt("".concat(current.height), 10) < parseInt("".concat(next.height), 10);
38
38
  return nextIsHigher || nextIsWider;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _default = function _default() {
9
+ return document;
10
+ };
11
+
12
+ exports.default = _default;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getDataURIDimension = void 0;
6
+ exports.getRequestedDimensions = exports.getDataURIDimension = void 0;
7
7
 
8
8
  var _isRetina = require("./isRetina");
9
9
 
@@ -34,4 +34,15 @@ var getDataURIDimension = function getDataURIDimension(dimension, options) {
34
34
  return _cardDimensions.defaultImageCardDimensions[dimension] * retinaFactor;
35
35
  };
36
36
 
37
- exports.getDataURIDimension = getDataURIDimension;
37
+ exports.getDataURIDimension = getDataURIDimension;
38
+
39
+ var getRequestedDimensions = function getRequestedDimensions(options) {
40
+ var width = getDataURIDimension('width', options);
41
+ var height = getDataURIDimension('height', options);
42
+ return {
43
+ width: width,
44
+ height: height
45
+ };
46
+ };
47
+
48
+ exports.getRequestedDimensions = getRequestedDimensions;
@@ -20,8 +20,8 @@ var getProcessingStatusFromFileState = function getProcessingStatusFromFileState
20
20
  }
21
21
  };
22
22
 
23
- var getFileDetails = function getFileDetails(state) {
24
- return !(0, _mediaClient.isErrorFileState)(state) ? {
23
+ var getFileDetailsFromFileState = function getFileDetailsFromFileState(state) {
24
+ return {
25
25
  id: state.id,
26
26
  name: state.name,
27
27
  size: state.size,
@@ -29,8 +29,16 @@ var getFileDetails = function getFileDetails(state) {
29
29
  createdAt: state.createdAt,
30
30
  mediaType: state.mediaType,
31
31
  processingStatus: getProcessingStatusFromFileState(state.status)
32
+ };
33
+ };
34
+
35
+ var getFileDetails = function getFileDetails(identifier, fileState) {
36
+ return (0, _mediaClient.isFileIdentifier)(identifier) ? fileState && !(0, _mediaClient.isErrorFileState)(fileState) ? getFileDetailsFromFileState(fileState) : {
37
+ id: identifier.id
32
38
  } : {
33
- id: state.id
39
+ id: identifier.mediaItemType,
40
+ name: identifier.name || identifier.dataURI,
41
+ mediaType: 'image'
34
42
  };
35
43
  };
36
44
 
@@ -86,6 +86,12 @@ var ObjectURLCache = /*#__PURE__*/function () {
86
86
  value: function set(key, value) {
87
87
  this.cache.set(key, value);
88
88
  }
89
+ }, {
90
+ key: "remove",
91
+ value: function remove(key) {
92
+ var removed = this.cache.remove(key);
93
+ removed && URL.revokeObjectURL(removed.dataURI);
94
+ }
89
95
  }]);
90
96
  return ObjectURLCache;
91
97
  }();
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.resizeModeToMediaImageProps = resizeModeToMediaImageProps;
7
+
8
+ function resizeModeToMediaImageProps(resizeMode) {
9
+ return {
10
+ crop: resizeMode === 'crop',
11
+ stretch: resizeMode === 'stretchy-fit'
12
+ };
13
+ }
@@ -13,7 +13,7 @@ var shouldDisplayImageThumbnail = function shouldDisplayImageThumbnail(cardStatu
13
13
  }
14
14
 
15
15
  if (dataURI) {
16
- return mediaItemType === 'external-image' || mimeType && (0, _mediaClient.isMimeTypeSupportedByBrowser)(mimeType) || cardStatus === 'complete';
16
+ return mediaItemType === 'external-image' || mimeType && (0, _mediaClient.isMimeTypeSupportedByBrowser)(mimeType) || cardStatus === 'complete' || cardStatus === 'loading-preview';
17
17
  }
18
18
 
19
19
  return false;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.takeSnapshot = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _videoSnapshot = _interopRequireDefault(require("video-snapshot"));
15
+
16
+ var takeSnapshot = /*#__PURE__*/function () {
17
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(blob) {
18
+ var snapshooter, dataUri;
19
+ return _regenerator.default.wrap(function _callee$(_context) {
20
+ while (1) {
21
+ switch (_context.prev = _context.next) {
22
+ case 0:
23
+ snapshooter = new _videoSnapshot.default(blob);
24
+ _context.next = 3;
25
+ return snapshooter.takeSnapshot();
26
+
27
+ case 3:
28
+ dataUri = _context.sent;
29
+ snapshooter.end();
30
+ return _context.abrupt("return", dataUri);
31
+
32
+ case 6:
33
+ case "end":
34
+ return _context.stop();
35
+ }
36
+ }
37
+ }, _callee);
38
+ }));
39
+
40
+ return function takeSnapshot(_x) {
41
+ return _ref.apply(this, arguments);
42
+ };
43
+ }();
44
+
45
+ exports.takeSnapshot = takeSnapshot;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-card",
3
- "version": "70.9.0",
3
+ "version": "72.0.0",
4
4
  "sideEffects": false
5
5
  }
@@ -11,11 +11,61 @@ export class MediaCardError extends Error {
11
11
  }
12
12
  }
13
13
 
14
+ }
15
+ export class LocalPreviewError extends MediaCardError {
16
+ constructor(primaryReason, secondaryError) {
17
+ super(primaryReason, secondaryError);
18
+ this.primaryReason = primaryReason;
19
+ this.secondaryError = secondaryError;
20
+ }
21
+
22
+ }
23
+ export class RemotePreviewError extends MediaCardError {
24
+ constructor(primaryReason, secondaryError) {
25
+ super(primaryReason, secondaryError);
26
+ this.primaryReason = primaryReason;
27
+ this.secondaryError = secondaryError;
28
+ }
29
+
30
+ }
31
+ export const getImageLoadPrimaryReason = source => {
32
+ switch (source) {
33
+ case 'cache-remote':
34
+ return 'cache-remote-uri';
35
+
36
+ case 'cache-local':
37
+ return 'cache-local-uri';
38
+
39
+ case 'external':
40
+ return 'external-uri';
41
+
42
+ case 'local':
43
+ return 'local-uri';
44
+
45
+ case 'remote':
46
+ return 'remote-uri';
47
+ // This fail reason will come from a bug, most likely.
48
+
49
+ default:
50
+ return `unknown-uri`;
51
+ }
52
+ };
53
+ export class ImageLoadError extends MediaCardError {
54
+ constructor(source) {
55
+ super(getImageLoadPrimaryReason(source));
56
+ }
57
+
14
58
  }
15
59
  export function isMediaCardError(err) {
16
60
  return err instanceof MediaCardError;
17
61
  }
18
- export const isLocalPreviewError = err => isMediaCardError(err) && err.primaryReason === 'local-preview-get'; // In a try/catch statement, the error caught is the type of any.
62
+ export const isLocalPreviewError = err => err instanceof LocalPreviewError;
63
+ export const isRemotePreviewError = err => err instanceof RemotePreviewError;
64
+ export const isUnsupportedLocalPreviewError = err => isMediaCardError(err) && err.primaryReason === 'local-preview-unsupported';
65
+ export function isImageLoadError(err) {
66
+ return err instanceof ImageLoadError;
67
+ } // In a try/catch statement, the error caught is the type of any.
19
68
  // We can use this helper to ensure that the error handled is the type of MediaCardError if unsure
20
69
 
21
- export const ensureMediaCardError = (primaryReason, error) => isMediaCardError(error) ? error : new MediaCardError(primaryReason, error);
70
+ export const ensureMediaCardError = (primaryReason, error) => isMediaCardError(error) ? error : new MediaCardError(primaryReason, error);
71
+ export const isUploadError = error => error.primaryReason === 'upload';
@@ -9,11 +9,9 @@ import { CardLoading } from '../../utils/lightCards/cardLoading';
9
9
  import { shouldDisplayImageThumbnail } from '../../utils/shouldDisplayImageThumbnail';
10
10
  import { ProgressBar } from '../../utils/progressBar';
11
11
  import CardActions from '../../utils/cardActions';
12
- import { withAnalyticsEvents } from '@atlaskit/analytics-next';
13
- import { fireMediaCardEvent, RenderEventAction, getRenderSucceededEventPayload, getRenderFailedFileUriPayload, getRenderFailedExternalUriPayload } from '../../utils/analytics';
14
- import { withFileAttributes } from '../../utils/fileAttributesContext';
15
12
  export const fileCardImageViewSelector = 'media-file-card-view';
16
- export class FileCardImageViewBase extends Component {
13
+ export const fileCardImageViewSelectedSelector = 'media-file-card-view-selected';
14
+ export class FileCardImageView extends Component {
17
15
  constructor(...args) {
18
16
  super(...args);
19
17
 
@@ -34,7 +32,7 @@ export class FileCardImageViewBase extends Component {
34
32
  // immediately, even if there's no image preview
35
33
 
36
34
 
37
- const isZeroSize = fileSize === '' && status === 'processing';
35
+ const isZeroSize = fileSize === '' && ['processing', 'loading-preview'].includes(status);
38
36
 
39
37
  if (mediaType !== 'video' && !this.isFileCardImageReadyForDisplay && !isZeroSize) {
40
38
  return this.renderLoadingContents();
@@ -140,36 +138,6 @@ export class FileCardImageViewBase extends Component {
140
138
  })));
141
139
  });
142
140
 
143
- _defineProperty(this, "onImageLoad", () => {
144
- const {
145
- createAnalyticsEvent,
146
- fileAttributes
147
- } = this.props;
148
-
149
- if (fileAttributes && this.shouldFireEvent(RenderEventAction.SUCCEEDED)) {
150
- fireMediaCardEvent(getRenderSucceededEventPayload(fileAttributes), createAnalyticsEvent);
151
- }
152
- });
153
-
154
- _defineProperty(this, "onImageError", () => {
155
- const {
156
- fileAttributes
157
- } = this.props;
158
-
159
- if (fileAttributes && this.shouldFireEvent(RenderEventAction.FAILED)) {
160
- const {
161
- createAnalyticsEvent,
162
- mediaItemType
163
- } = this.props;
164
-
165
- if (mediaItemType === 'file') {
166
- fireMediaCardEvent(getRenderFailedFileUriPayload(fileAttributes), createAnalyticsEvent);
167
- } else if (mediaItemType === 'external-image') {
168
- fireMediaCardEvent(getRenderFailedExternalUriPayload(fileAttributes), createAnalyticsEvent);
169
- }
170
- }
171
- });
172
-
173
141
  _defineProperty(this, "renderMediaImage", () => {
174
142
  const {
175
143
  status,
@@ -179,7 +147,9 @@ export class FileCardImageViewBase extends Component {
179
147
  mimeType,
180
148
  previewOrientation,
181
149
  onDisplayImage,
182
- alt
150
+ alt,
151
+ onImageLoad,
152
+ onImageError
183
153
  } = this.props;
184
154
 
185
155
  if (!shouldDisplayImageThumbnail(status, mediaItemType, dataURI, mediaType, mimeType)) {
@@ -197,13 +167,11 @@ export class FileCardImageViewBase extends Component {
197
167
  crop: this.isCropped,
198
168
  stretch: this.isStretched,
199
169
  previewOrientation: previewOrientation,
200
- onImageLoad: this.onImageLoad,
201
- onImageError: this.onImageError
170
+ onImageLoad: onImageLoad,
171
+ onImageError: onImageError
202
172
  });
203
173
  });
204
174
 
205
- _defineProperty(this, "shouldFireEvent", action => !this.lastAnalyticsAction || this.lastAnalyticsAction !== action);
206
-
207
175
  _defineProperty(this, "renderProgressBar", () => {
208
176
  const {
209
177
  mediaName,
@@ -298,7 +266,7 @@ export class FileCardImageViewBase extends Component {
298
266
  selectable: selectable,
299
267
  selected: selected,
300
268
  mediaType: mediaType,
301
- className: fileCardImageViewSelector
269
+ className: `${fileCardImageViewSelector} ${selected ? fileCardImageViewSelectedSelector : ''}`
302
270
  }, this.renderCardContents());
303
271
  }
304
272
 
@@ -307,7 +275,7 @@ export class FileCardImageViewBase extends Component {
307
275
  dataURI,
308
276
  status
309
277
  } = this.props;
310
- return !!dataURI || !['loading', 'processing'].includes(status);
278
+ return !!dataURI || !['loading', 'processing', 'loading-preview'].includes(status);
311
279
  }
312
280
 
313
281
  get isCropped() {
@@ -326,9 +294,7 @@ export class FileCardImageViewBase extends Component {
326
294
 
327
295
  }
328
296
 
329
- _defineProperty(FileCardImageViewBase, "defaultProps", {
297
+ _defineProperty(FileCardImageView, "defaultProps", {
330
298
  resizeMode: 'crop',
331
299
  disableOverlay: false
332
- });
333
-
334
- export const FileCardImageView = withAnalyticsEvents()(withFileAttributes(FileCardImageViewBase));
300
+ });
@@ -1 +1 @@
1
- export { FileCardImageView, FileCardImageViewBase } from './cardImageView';
1
+ export { FileCardImageView } from './cardImageView';
@@ -1,7 +1,7 @@
1
- export { default as Card } from './root/card/cardLoader';
1
+ export { Card, MediaInlineCard } from './root';
2
2
  export { CardLoading } from './utils/lightCards/cardLoading';
3
3
  export { CardError } from './utils/lightCards/cardError';
4
4
  export { defaultImageCardDimensions } from './utils/cardDimensions';
5
- export { fileCardImageViewSelector } from './files/cardImageView';
5
+ export { fileCardImageViewSelector, fileCardImageViewSelectedSelector } from './files/cardImageView';
6
6
  export { inlinePlayerClassName } from './root/inlinePlayer';
7
- export { newFileExperienceClassName } from './root/cardView';
7
+ export { newFileExperienceClassName } from './root/card/cardConstants';
@@ -1,30 +1,36 @@
1
- import { fireMediaCardEvent, getRenderSucceededEventPayload, getRenderErrorEventPayload, getRenderFailedFileStatusPayload } from '../../utils/analytics';
2
- export const relevantFeatureFlagNames = ['newCardExperience', 'poll_intervalMs', 'poll_maxAttempts', 'poll_backoffFactor', 'poll_maxIntervalMs', 'captions'];
3
- export const fireOperationalEvent = (createAnalyticsEvent, status, fileAttributes, {
4
- cardPreview,
5
- error
6
- } = {}) => {
1
+ import { fireMediaCardEvent, getRenderSucceededEventPayload, getRenderErrorEventPayload, getRenderFailedFileStatusPayload, getCopiedFilePayload, getRenderCommencedEventPayload, getRenderPreviewableCardPayload } from '../../utils/analytics';
2
+ export const relevantFeatureFlagNames = ['newCardExperience', 'captions'];
3
+ export const fireOperationalEvent = (createAnalyticsEvent, status, fileAttributes, performanceAttributes, error) => {
7
4
  const fireEvent = payload => fireMediaCardEvent(payload, createAnalyticsEvent);
8
5
 
9
6
  switch (status) {
10
7
  case 'complete':
11
- /**
12
- * A Card that is considered Complete and has no preview,
13
- * reflects an expected behaviour, and thus a legitimate
14
- * success case to be logged.
15
- */
16
- if (!(cardPreview !== null && cardPreview !== void 0 && cardPreview.dataURI)) {
17
- fireEvent(getRenderSucceededEventPayload(fileAttributes));
18
- }
19
-
8
+ fireEvent(getRenderSucceededEventPayload(fileAttributes, performanceAttributes));
20
9
  break;
21
10
 
22
11
  case 'failed-processing':
23
- fireEvent(getRenderFailedFileStatusPayload(fileAttributes));
12
+ fireEvent(getRenderFailedFileStatusPayload(fileAttributes, performanceAttributes));
24
13
  break;
25
14
 
26
15
  case 'error':
27
- error && fireEvent(getRenderErrorEventPayload(fileAttributes, error));
16
+ error && fireEvent(getRenderErrorEventPayload(fileAttributes, performanceAttributes, error));
28
17
  break;
29
18
  }
19
+ };
20
+ export const fireCommencedEvent = (createAnalyticsEvent, fileAttributes, performanceAttributes) => {
21
+ fireMediaCardEvent(getRenderCommencedEventPayload(fileAttributes, performanceAttributes), createAnalyticsEvent);
22
+ };
23
+ export const fireCopiedEvent = (createAnalyticsEvent, fileId, cardRef) => {
24
+ if (typeof window.getSelection === 'function') {
25
+ var _selection$containsNo;
26
+
27
+ const selection = window.getSelection();
28
+
29
+ if (selection !== null && selection !== void 0 && (_selection$containsNo = selection.containsNode) !== null && _selection$containsNo !== void 0 && _selection$containsNo.call(selection, cardRef, true)) {
30
+ fireMediaCardEvent(getCopiedFilePayload(fileId), createAnalyticsEvent);
31
+ }
32
+ }
33
+ };
34
+ export const fireScreenEvent = (createAnalyticsEvent, fileAttributes) => {
35
+ fireMediaCardEvent(getRenderPreviewableCardPayload(fileAttributes), createAnalyticsEvent);
30
36
  };
@@ -0,0 +1 @@
1
+ export const newFileExperienceClassName = 'new-file-experience-wrapper';
@@ -0,0 +1,93 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+
3
+ /*
4
+ * This file is designed to be optimised for maximum performance.
5
+ * Because of this the imports are optimised to import only what is required
6
+ * If you're adding a new dependency please ensure that the
7
+ * imported file only contains and depends on only what is required for it to function.
8
+ */
9
+ import React from 'react';
10
+ import { imageResizeModeToFileImageMode } from '@atlaskit/media-client';
11
+ import { MediaImage } from '@atlaskit/media-ui';
12
+ import SpinnerIcon from '@atlaskit/spinner';
13
+ import { getRequestedDimensions } from '../../utils/getDataURIDimension';
14
+ import { defaultImageCardDimensions } from '../../utils/cardDimensions';
15
+ import { IconWrapper } from '../ui/iconWrapper/styled';
16
+ import { SSRFileExperienceWrapper, CardImageContainer, calcBreakpointSize } from '../ui/styledSSR';
17
+ import { Blanket } from '../ui/blanket/styled';
18
+ import { newFileExperienceClassName } from './cardConstants';
19
+ import { resizeModeToMediaImageProps } from '../../utils/resizeModeToMediaImageProps';
20
+ export const CardSSRView = ({
21
+ identifier,
22
+ dimensions,
23
+ mediaClient,
24
+ resizeMode,
25
+ disableOverlay,
26
+ isLazy
27
+ }) => {
28
+ let dataURI;
29
+
30
+ try {
31
+ const {
32
+ width,
33
+ height
34
+ } = getRequestedDimensions({
35
+ dimensions
36
+ });
37
+ const mode = imageResizeModeToFileImageMode(resizeMode);
38
+ dataURI = mediaClient.getImageUrlSync(identifier.id, {
39
+ collection: identifier.collectionName,
40
+ mode,
41
+ width,
42
+ height,
43
+ allowAnimated: true
44
+ });
45
+ } catch (e) {
46
+ // if we are unable to get the image url (eg missing auth) we want to continue rendering with a spinner
47
+ dataURI = '';
48
+ }
49
+
50
+ const shouldDisplayBackground = !dataURI || !disableOverlay;
51
+ return /*#__PURE__*/React.createElement(SSRFileExperienceWrapper, {
52
+ className: newFileExperienceClassName,
53
+ dimensions: dimensions,
54
+ breakpoint: calculateBreakpoint(dimensions),
55
+ shouldUsePointerCursor: Boolean(dataURI),
56
+ displayBackground: shouldDisplayBackground,
57
+ disableOverlay: !!disableOverlay,
58
+ selected: false,
59
+ "data-testid": "media-card-view"
60
+ }, /*#__PURE__*/React.createElement(CardImageContainer, {
61
+ className: "media-file-card-view",
62
+ "data-testid": "media-file-card-view"
63
+ }, /*#__PURE__*/React.createElement(IconWrapper, {
64
+ breakpoint: calculateBreakpoint(dimensions),
65
+ hasTitleBox: false
66
+ }, /*#__PURE__*/React.createElement(SpinnerIcon, null)), !!dataURI && /*#__PURE__*/React.createElement(MediaImage, _extends({
67
+ dataURI: dataURI // alt={alt} // having alt text causes the image to fail to render with a broken image.
68
+ // onImageLoad={this.onImageLoad} // TODO add these back as part of tracking performance.
69
+ // onImageError={this.onImageError}
70
+
71
+ }, resizeModeToMediaImageProps(resizeMode), {
72
+ loading: getLazyValue(isLazy)
73
+ })), !disableOverlay && /*#__PURE__*/React.createElement(Blanket, {
74
+ isFixed: false
75
+ })));
76
+ };
77
+
78
+ function getLazyValue(isLazy) {
79
+ switch (isLazy) {
80
+ case false:
81
+ return 'eager';
82
+
83
+ default:
84
+ return 'lazy';
85
+ }
86
+ }
87
+
88
+ function calculateBreakpoint(dimensions) {
89
+ var _dimensions$width;
90
+
91
+ const width = (_dimensions$width = dimensions === null || dimensions === void 0 ? void 0 : dimensions.width) !== null && _dimensions$width !== void 0 ? _dimensions$width : defaultImageCardDimensions.width;
92
+ return calcBreakpointSize(parseInt(`${width}`, 10));
93
+ }