@atlaskit/media-card 79.12.0 → 79.13.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 (38) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/card/card.js +1 -1
  3. package/dist/cjs/card/externalImageCard.js +17 -12
  4. package/dist/cjs/card/fileCard.js +34 -12
  5. package/dist/cjs/card/media-card-analytics-error-boundary.js +1 -1
  6. package/dist/cjs/card/ui/titleBox/failedTitleBox.js +0 -2
  7. package/dist/cjs/inline/loader.js +1 -1
  8. package/dist/cjs/inline/mediaInlineAnalyticsErrorBoundary.js +0 -2
  9. package/dist/cjs/utils/globalScope/globalScope.js +2 -1
  10. package/dist/cjs/utils/mediaPerformanceObserver/durationMetrics.js +1 -0
  11. package/dist/cjs/utils/ufoExperiences.js +454 -68
  12. package/dist/es2019/card/card.js +1 -1
  13. package/dist/es2019/card/externalImageCard.js +16 -13
  14. package/dist/es2019/card/fileCard.js +33 -13
  15. package/dist/es2019/card/media-card-analytics-error-boundary.js +1 -1
  16. package/dist/es2019/card/ui/titleBox/failedTitleBox.js +0 -2
  17. package/dist/es2019/inline/loader.js +1 -1
  18. package/dist/es2019/inline/mediaInlineAnalyticsErrorBoundary.js +0 -2
  19. package/dist/es2019/utils/globalScope/globalScope.js +1 -0
  20. package/dist/es2019/utils/mediaPerformanceObserver/durationMetrics.js +1 -0
  21. package/dist/es2019/utils/ufoExperiences.js +449 -72
  22. package/dist/esm/card/card.js +1 -1
  23. package/dist/esm/card/externalImageCard.js +18 -13
  24. package/dist/esm/card/fileCard.js +35 -13
  25. package/dist/esm/card/media-card-analytics-error-boundary.js +1 -1
  26. package/dist/esm/card/ui/titleBox/failedTitleBox.js +0 -2
  27. package/dist/esm/inline/loader.js +1 -1
  28. package/dist/esm/inline/mediaInlineAnalyticsErrorBoundary.js +0 -2
  29. package/dist/esm/utils/globalScope/globalScope.js +1 -0
  30. package/dist/esm/utils/mediaPerformanceObserver/durationMetrics.js +1 -0
  31. package/dist/esm/utils/ufoExperiences.js +454 -68
  32. package/dist/types/utils/globalScope/globalScope.d.ts +2 -0
  33. package/dist/types/utils/mediaPerformanceObserver/durationMetrics.d.ts +1 -0
  34. package/dist/types/utils/ufoExperiences.d.ts +88 -5
  35. package/dist/types-ts4.5/utils/globalScope/globalScope.d.ts +2 -0
  36. package/dist/types-ts4.5/utils/mediaPerformanceObserver/durationMetrics.d.ts +1 -0
  37. package/dist/types-ts4.5/utils/ufoExperiences.d.ts +88 -5
  38. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @atlaskit/media-card
2
2
 
3
+ ## 79.13.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`87b12e64ff750`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/87b12e64ff750) -
8
+ Removed usages of LEGACY icon props
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies
13
+
3
14
  ## 79.12.0
4
15
 
5
16
  ### Minor Changes
@@ -22,7 +22,7 @@ var _label = _interopRequireDefault(require("@atlaskit/react-ufo/label"));
22
22
  var _excluded = ["identifier"];
23
23
  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" != _typeof(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); }
24
24
  var packageName = "@atlaskit/media-card";
25
- var packageVersion = "0.0.0-development";
25
+ var packageVersion = "79.13.0";
26
26
  var CardBase = exports.CardBase = function CardBase(_ref) {
27
27
  var identifier = _ref.identifier,
28
28
  otherProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
@@ -72,10 +72,17 @@ var ExternalImageCard = exports.ExternalImageCard = function ExternalImageCard(_
72
72
  wasStatusUploading: false,
73
73
  wasStatusProcessing: false
74
74
  });
75
+ var shouldSendPerformanceEvent = (0, _react.useMemo)(function () {
76
+ return (0, _ufoExperiences.shouldPerformanceBeSampled)();
77
+ }, []);
78
+
79
+ // UFO experience hook - creates a unique experience instance per card
80
+ var ufoExperience = (0, _ufoExperiences.useMediaCardUfoExperience)({
81
+ instanceId: internalOccurrenceKey,
82
+ enabled: shouldSendPerformanceEvent
83
+ });
75
84
  var startUfoExperienceRef = (0, _useCurrentValueRef.useCurrentValueRef)(function () {
76
- if (shouldSendPerformanceEventRef.current) {
77
- (0, _ufoExperiences.startUfoExperience)(internalOccurrenceKey);
78
- }
85
+ ufoExperience.start();
79
86
  });
80
87
  var _useState = (0, _react.useState)('loading-preview'),
81
88
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -119,7 +126,6 @@ var ExternalImageCard = exports.ExternalImageCard = function ExternalImageCard(_
119
126
  _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
120
127
  mediaViewerSelectedItem = _useState8[0],
121
128
  setMediaViewerSelectedItem = _useState8[1];
122
- var shouldSendPerformanceEventRef = (0, _react.useRef)((0, _ufoExperiences.shouldPerformanceBeSampled)());
123
129
 
124
130
  //----------------------------------------------------------------//
125
131
  //---------------------- Analytics ------------------------------//
@@ -135,17 +141,16 @@ var ExternalImageCard = exports.ExternalImageCard = function ExternalImageCard(_
135
141
  }
136
142
  };
137
143
  createAnalyticsEvent && (0, _cardAnalytics.fireOperationalEvent)(createAnalyticsEvent, status, fileAttributes, performanceAttributes, ssrReliability, error, traceContext, undefined);
138
- shouldSendPerformanceEventRef.current && (0, _ufoExperiences.completeUfoExperience)(internalOccurrenceKey, status, fileAttributes, fileStateFlagsRef.current, ssrReliability, error);
144
+ // External images don't use SSR - no ssrPreviewInfo passed
145
+ ufoExperience.complete(status, fileAttributes, fileStateFlagsRef.current, ssrReliability, error, undefined);
139
146
  });
140
147
  var fireAbortedEventRef = (0, _useCurrentValueRef.useCurrentValueRef)(function () {
141
148
  // UFO won't abort if it's already in a final state (succeeded, failed, aborted, etc)
142
- if (shouldSendPerformanceEventRef.current) {
143
- (0, _ufoExperiences.abortUfoExperience)(internalOccurrenceKey, {
144
- fileAttributes: fileAttributes,
145
- fileStateFlags: fileStateFlagsRef === null || fileStateFlagsRef === void 0 ? void 0 : fileStateFlagsRef.current,
146
- ssrReliability: ssrReliability
147
- });
148
- }
149
+ ufoExperience.abort({
150
+ fileAttributes: fileAttributes,
151
+ fileStateFlags: fileStateFlagsRef === null || fileStateFlagsRef === void 0 ? void 0 : fileStateFlagsRef.current,
152
+ ssrReliability: ssrReliability
153
+ });
149
154
  });
150
155
 
151
156
  //----------------------------------------------------------------//
@@ -220,7 +220,15 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
220
220
  onImageLoadBase = _useFilePreview.onImageLoad,
221
221
  getSsrScriptProps = _useFilePreview.getSsrScriptProps,
222
222
  copyNodeRef = _useFilePreview.copyNodeRef;
223
- var shouldSendPerformanceEventRef = (0, _react.useRef)((0, _ufoExperiences.shouldPerformanceBeSampled)());
223
+ var shouldSendPerformanceEvent = (0, _react.useMemo)(function () {
224
+ return (0, _ufoExperiences.shouldPerformanceBeSampled)();
225
+ }, []);
226
+
227
+ // UFO experience hook - creates a unique experience instance per card
228
+ var ufoExperience = (0, _ufoExperiences.useMediaCardUfoExperience)({
229
+ instanceId: internalOccurrenceKey,
230
+ enabled: shouldSendPerformanceEvent
231
+ });
224
232
  var _useState13 = (0, _react.useState)(),
225
233
  _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
226
234
  error = _useState14[0],
@@ -335,6 +343,7 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
335
343
  //----------------------------------------------------------------//
336
344
 
337
345
  var fireOperationalEventRef = (0, _useCurrentValueRef.useCurrentValueRef)(function () {
346
+ var _ssrReliability$serve, _ssrReliability$clien;
338
347
  var timeElapsedTillEvent = (0, _performance.performanceNow)();
339
348
  var durationSinceCommenced = timeElapsedTillEvent - timeElapsedTillCommenced;
340
349
  var performanceAttributes = {
@@ -344,7 +353,19 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
344
353
  }
345
354
  };
346
355
  createAnalyticsEvent && (0, _cardAnalytics.fireOperationalEvent)(createAnalyticsEvent, finalStatus, fileAttributes, performanceAttributes, ssrReliability, finalError, traceContext, fileStateValue === null || fileStateValue === void 0 ? void 0 : fileStateValue.metadataTraceContext);
347
- shouldSendPerformanceEventRef.current && (0, _ufoExperiences.completeUfoExperience)(internalOccurrenceKey, finalStatus, fileAttributes, fileStateFlagsRef.current, ssrReliability, finalError);
356
+
357
+ // Determine SSR preview info for UFO timing strategy
358
+ // wasSSRAttempted is only true when SSR was used AND preview is non-lazy
359
+ // because lazy SSR defers loading, so it behaves like CSR for timing purposes
360
+ var isSSRNonLazy = !!ssr && (preview === null || preview === void 0 ? void 0 : preview.lazy) !== true;
361
+ var wasSSRSuccessful = isSSRNonLazy && (((_ssrReliability$serve = ssrReliability.server) === null || _ssrReliability$serve === void 0 ? void 0 : _ssrReliability$serve.status) === 'success' || ((_ssrReliability$clien = ssrReliability.client) === null || _ssrReliability$clien === void 0 ? void 0 : _ssrReliability$clien.status) === 'success');
362
+ var ssrPreviewInfo = {
363
+ dataUri: preview === null || preview === void 0 ? void 0 : preview.dataURI,
364
+ srcset: preview === null || preview === void 0 ? void 0 : preview.srcSet,
365
+ wasSSRAttempted: isSSRNonLazy,
366
+ wasSSRSuccessful: wasSSRSuccessful
367
+ };
368
+ ufoExperience.complete(finalStatus, fileAttributes, fileStateFlagsRef.current, ssrReliability, finalError, ssrPreviewInfo);
348
369
  });
349
370
  var fireNonCriticalErrorEventRef = (0, _useCurrentValueRef.useCurrentValueRef)(function (error) {
350
371
  createAnalyticsEvent && (0, _cardAnalytics.fireNonCriticalErrorEvent)(createAnalyticsEvent, finalStatus, fileAttributes, ssrReliability, error, traceContext, fileStateValue === null || fileStateValue === void 0 ? void 0 : fileStateValue.metadataTraceContext);
@@ -355,19 +376,20 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
355
376
  }
356
377
  }, [nonCriticalError, fireNonCriticalErrorEventRef]);
357
378
  var startUfoExperienceRef = (0, _useCurrentValueRef.useCurrentValueRef)(function () {
358
- if (shouldSendPerformanceEventRef.current) {
359
- (0, _ufoExperiences.startUfoExperience)(internalOccurrenceKey);
360
- }
379
+ // For non-lazy SSR previews, use interaction start time as the experience start time
380
+ // because the image loading started at interaction start, not at mount time
381
+ var isSSRNonLazy = !!ssr && (preview === null || preview === void 0 ? void 0 : preview.lazy) !== true;
382
+ ufoExperience.start({
383
+ useInteractionTime: isSSRNonLazy
384
+ });
361
385
  });
362
386
  var fireAbortedEventRef = (0, _useCurrentValueRef.useCurrentValueRef)(function () {
363
387
  // UFO won't abort if it's already in a final state (succeeded, failed, aborted, etc)
364
- if (shouldSendPerformanceEventRef.current) {
365
- (0, _ufoExperiences.abortUfoExperience)(internalOccurrenceKey, {
366
- fileAttributes: fileAttributes,
367
- fileStateFlags: fileStateFlagsRef === null || fileStateFlagsRef === void 0 ? void 0 : fileStateFlagsRef.current,
368
- ssrReliability: ssrReliability
369
- });
370
- }
388
+ ufoExperience.abort({
389
+ fileAttributes: fileAttributes,
390
+ fileStateFlags: fileStateFlagsRef === null || fileStateFlagsRef === void 0 ? void 0 : fileStateFlagsRef.current,
391
+ ssrReliability: ssrReliability
392
+ });
371
393
  });
372
394
 
373
395
  //----------------------------------------------------------------//
@@ -87,7 +87,7 @@ var WrappedMediaCardAnalyticsErrorBoundary = /*#__PURE__*/function (_React$Compo
87
87
  }(_react.default.Component);
88
88
  (0, _defineProperty2.default)(WrappedMediaCardAnalyticsErrorBoundary, "displayName", 'MediaCardAnalyticsErrorBoundary');
89
89
  var packageName = "@atlaskit/media-card";
90
- var packageVersion = "0.0.0-development";
90
+ var packageVersion = "79.13.0";
91
91
 
92
92
  // @ts-ignore: [PIT-1685] Fails in post-office due to backwards incompatibility issue with React 18
93
93
  var MediaCardAnalyticsErrorBoundary = (0, _mediaCommon.withMediaAnalyticsContext)({
@@ -23,8 +23,6 @@ var FailedTitleBox = exports.FailedTitleBox = function FailedTitleBox(_ref) {
23
23
  breakpoint: breakpoint
24
24
  }, /*#__PURE__*/_react.default.createElement(_titleBoxComponents.ErrorMessageWrapper, null, /*#__PURE__*/_react.default.createElement(_statusWarning.default, {
25
25
  label: 'Warning',
26
- LEGACY_size: 'small',
27
- LEGACY_margin: "0 ".concat("var(--ds-space-negative-025, -2px)"),
28
26
  color: "var(--ds-text-danger, ".concat(_colors.R300, ")"),
29
27
  size: "small"
30
28
  }), /*#__PURE__*/_react.default.createElement("span", {
@@ -116,7 +116,7 @@ var MediaInlineCardLoader = exports.default = /*#__PURE__*/function (_React$Pure
116
116
  ErrorBoundary = _this$state.ErrorBoundary;
117
117
  var analyticsContext = {
118
118
  packageVersion: "@atlaskit/media-card",
119
- packageName: "0.0.0-development",
119
+ packageName: "79.13.0",
120
120
  componentName: 'mediaInlineCard',
121
121
  component: 'mediaInlineCard'
122
122
  };
@@ -69,9 +69,7 @@ var ErrorBoundaryComponent = function ErrorBoundaryComponent(_ref) {
69
69
  _react.default.createElement("span", {
70
70
  style: style
71
71
  }, /*#__PURE__*/_react.default.createElement(_statusWarning.default, {
72
- LEGACY_margin: "0 ".concat("var(--ds-space-negative-050, -4px)", " 0 0"),
73
72
  label: "error",
74
- LEGACY_size: "small",
75
73
  color: "var(--ds-icon-danger, ".concat(_colors.R300, ")"),
76
74
  size: "small"
77
75
  }), message)
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getKey = exports.generateScriptProps = exports.GLOBAL_MEDIA_NAMESPACE = exports.GLOBAL_MEDIA_CARD_SSR = void 0;
6
+ exports.getKey = exports.generateScriptProps = exports.GLOBAL_MEDIA_PERFORMANCE_ENTRIES = exports.GLOBAL_MEDIA_NAMESPACE = exports.GLOBAL_MEDIA_CARD_SSR = void 0;
7
7
  exports.getMediaCardSSR = getMediaCardSSR;
8
8
  exports.getMediaGlobalScope = getMediaGlobalScope;
9
9
  exports.storeDataURI = void 0;
@@ -16,6 +16,7 @@ var _printScript = require("../printScript");
16
16
 
17
17
  var GLOBAL_MEDIA_CARD_SSR = exports.GLOBAL_MEDIA_CARD_SSR = 'mediaCardSsr';
18
18
  var GLOBAL_MEDIA_NAMESPACE = exports.GLOBAL_MEDIA_NAMESPACE = '__MEDIA_INTERNAL';
19
+ var GLOBAL_MEDIA_PERFORMANCE_ENTRIES = exports.GLOBAL_MEDIA_PERFORMANCE_ENTRIES = 'performanceEntries';
19
20
  function getMediaGlobalScope() {
20
21
  var globalScope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;
21
22
  // Must match GLOBAL_MEDIA_NAMESPACE. Can't reference the constant from here.
@@ -99,6 +99,7 @@ var createMediaDurationMetrics = exports.createMediaDurationMetrics = function c
99
99
  totalDuration: entry.duration,
100
100
  initiatorType: entry.initiatorType,
101
101
  // value can be 'fetch' or 'img'
102
+ endedAt: entry.responseEnd - interactionStartTime,
102
103
  responseEnd: entry.responseEnd,
103
104
  browserCacheHit: entry.transferSize === 0,
104
105
  nextHopProtocol: entry.nextHopProtocol