@atlaskit/media-card 73.4.2 → 73.6.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 +35 -0
- package/classnames/package.json +8 -0
- package/dist/cjs/classnames.js +19 -0
- package/dist/cjs/files/cardImageView/classnames.js +10 -0
- package/dist/cjs/files/cardImageView/index.js +4 -7
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/root/card/cardAnalytics.js +24 -3
- package/dist/cjs/root/card/index.js +32 -3
- package/dist/cjs/root/cardView.js +1 -1
- package/dist/cjs/utils/generateUniqueId.js +12 -0
- package/dist/cjs/utils/ufoExperiences.js +101 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/classnames.js +1 -0
- package/dist/es2019/files/cardImageView/classnames.js +2 -0
- package/dist/es2019/files/cardImageView/index.js +1 -2
- package/dist/es2019/index.js +1 -1
- package/dist/es2019/root/card/cardAnalytics.js +11 -1
- package/dist/es2019/root/card/index.js +34 -4
- package/dist/es2019/root/cardView.js +1 -1
- package/dist/es2019/utils/generateUniqueId.js +3 -0
- package/dist/es2019/utils/ufoExperiences.js +77 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/classnames.js +1 -0
- package/dist/esm/files/cardImageView/classnames.js +2 -0
- package/dist/esm/files/cardImageView/index.js +1 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/root/card/cardAnalytics.js +15 -1
- package/dist/esm/root/card/index.js +33 -4
- package/dist/esm/root/cardView.js +1 -1
- package/dist/esm/utils/generateUniqueId.js +3 -0
- package/dist/esm/utils/ufoExperiences.js +83 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/classnames.d.ts +1 -0
- package/dist/types/errors.d.ts +1 -1
- package/dist/types/files/cardImageView/cardOverlay/styled.d.ts +10 -10
- package/dist/types/files/cardImageView/classnames.d.ts +2 -0
- package/dist/types/files/cardImageView/index.d.ts +0 -2
- package/dist/types/files/cardImageView/styled.d.ts +266 -9
- package/dist/types/index.d.ts +1 -1
- package/dist/types/root/card/cardAnalytics.d.ts +11 -2
- package/dist/types/root/card/getCardPreview/helpers.d.ts +2 -2
- package/dist/types/root/card/index.d.ts +4 -1
- package/dist/types/root/cardView.d.ts +1 -1
- package/dist/types/root/inlinePlayer.d.ts +1 -1
- package/dist/types/root/styled.d.ts +1 -1
- package/dist/types/root/ui/loadingRateLimited/styled.d.ts +3 -3
- package/dist/types/root/ui/playButton/styled.d.ts +2 -2
- package/dist/types/root/ui/styled.d.ts +1 -1
- package/dist/types/root/ui/titleBox/styled.d.ts +2 -2
- package/dist/types/styles/mixins.d.ts +1 -1
- package/dist/types/types.d.ts +4 -0
- package/dist/types/utils/analytics.d.ts +1 -1
- package/dist/types/utils/cardDimensions.d.ts +5 -5
- package/dist/types/utils/dimensionComparer.d.ts +2 -2
- package/dist/types/utils/generateUniqueId.d.ts +1 -0
- package/dist/types/utils/getMediaCardCursor.d.ts +2 -1
- package/dist/types/utils/metadata.d.ts +2 -2
- package/dist/types/utils/shouldDisplayImageThumbnail.d.ts +2 -2
- package/dist/types/utils/ufoExperiences.d.ts +7 -0
- package/example-helpers/index.tsx +2 -2
- package/in-product/package.json +1 -0
- package/package.json +14 -11
- package/types/package.json +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# @atlaskit/media-card
|
|
2
2
|
|
|
3
|
+
## 73.6.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`b4fd2a59367`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b4fd2a59367) - Attach media environment and region to the media-card UFO events
|
|
8
|
+
- [`7e767393469`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7e767393469) - Add ufo feature flag logging to `media-card`
|
|
9
|
+
- [`ade1a5c3e23`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ade1a5c3e23) - Flagged events with file states processing and uploading for UFO payload
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`bf0e7c8e46b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/bf0e7c8e46b) - [MEX-1413] Hot fix for remove useMediaPickerAuthProvider flag
|
|
14
|
+
- [`79c431ca1a6`](https://bitbucket.org/atlassian/atlassian-frontend/commits/79c431ca1a6) - Removed "Creating Preview" message for files already processed
|
|
15
|
+
- [`f87afac53b3`](https://bitbucket.org/atlassian/atlassian-frontend/commits/f87afac53b3) - Add ufo logging for media-card
|
|
16
|
+
- Updated dependencies
|
|
17
|
+
|
|
18
|
+
## 73.5.1
|
|
19
|
+
|
|
20
|
+
### Patch Changes
|
|
21
|
+
|
|
22
|
+
- [`cb2392f6d33`](https://bitbucket.org/atlassian/atlassian-frontend/commits/cb2392f6d33) - Upgrade to TypeScript 4.2.4
|
|
23
|
+
- Updated dependencies
|
|
24
|
+
|
|
25
|
+
## 73.5.0
|
|
26
|
+
|
|
27
|
+
### Minor Changes
|
|
28
|
+
|
|
29
|
+
- [`02fb8e78fb9`](https://bitbucket.org/atlassian/atlassian-frontend/commits/02fb8e78fb9) - Implement media card render UFO experience
|
|
30
|
+
|
|
31
|
+
### Patch Changes
|
|
32
|
+
|
|
33
|
+
- [`3ef794dc11f`](https://bitbucket.org/atlassian/atlassian-frontend/commits/3ef794dc11f) - Removed emoji and media packages dependencies from renderer initial load.
|
|
34
|
+
- [`7948702bf56`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7948702bf56) - Fixing a bug where sometimes the media card pre-load indicator is given 100% height and renders over other components. It now has a max height of 0 and is not a click target
|
|
35
|
+
- [`065ae19cb44`](https://bitbucket.org/atlassian/atlassian-frontend/commits/065ae19cb44) - Enforced "up to date" logged feature flags via type checks
|
|
36
|
+
- Updated dependencies
|
|
37
|
+
|
|
3
38
|
## 73.4.2
|
|
4
39
|
|
|
5
40
|
### Patch Changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "fileCardImageViewSelectedSelector", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _classnames.fileCardImageViewSelectedSelector;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "fileCardImageViewSelector", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _classnames.fileCardImageViewSelector;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
var _classnames = require("./files/cardImageView/classnames");
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.fileCardImageViewSelector = exports.fileCardImageViewSelectedSelector = void 0;
|
|
7
|
+
var fileCardImageViewSelector = 'media-file-card-view';
|
|
8
|
+
exports.fileCardImageViewSelector = fileCardImageViewSelector;
|
|
9
|
+
var fileCardImageViewSelectedSelector = 'media-file-card-view-selected';
|
|
10
|
+
exports.fileCardImageViewSelectedSelector = fileCardImageViewSelectedSelector;
|
|
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports.
|
|
10
|
+
exports.FileCardImageView = void 0;
|
|
11
11
|
|
|
12
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
13
|
|
|
@@ -41,6 +41,8 @@ var _progressBar = require("../../utils/progressBar");
|
|
|
41
41
|
|
|
42
42
|
var _cardActions = _interopRequireDefault(require("../../utils/cardActions"));
|
|
43
43
|
|
|
44
|
+
var _classnames = require("./classnames");
|
|
45
|
+
|
|
44
46
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
45
47
|
|
|
46
48
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -49,11 +51,6 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
49
51
|
|
|
50
52
|
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; } }
|
|
51
53
|
|
|
52
|
-
var fileCardImageViewSelector = 'media-file-card-view';
|
|
53
|
-
exports.fileCardImageViewSelector = fileCardImageViewSelector;
|
|
54
|
-
var fileCardImageViewSelectedSelector = 'media-file-card-view-selected';
|
|
55
|
-
exports.fileCardImageViewSelectedSelector = fileCardImageViewSelectedSelector;
|
|
56
|
-
|
|
57
54
|
var FileCardImageView = /*#__PURE__*/function (_Component) {
|
|
58
55
|
(0, _inherits2.default)(FileCardImageView, _Component);
|
|
59
56
|
|
|
@@ -313,7 +310,7 @@ var FileCardImageView = /*#__PURE__*/function (_Component) {
|
|
|
313
310
|
selectable: selectable,
|
|
314
311
|
selected: selected,
|
|
315
312
|
mediaType: mediaType,
|
|
316
|
-
className: "".concat(fileCardImageViewSelector, " ").concat(selected ? fileCardImageViewSelectedSelector : '')
|
|
313
|
+
className: "".concat(_classnames.fileCardImageViewSelector, " ").concat(selected ? _classnames.fileCardImageViewSelectedSelector : '')
|
|
317
314
|
}, this.renderCardContents());
|
|
318
315
|
}
|
|
319
316
|
}, {
|
package/dist/cjs/index.js
CHANGED
|
@@ -36,13 +36,13 @@ Object.defineProperty(exports, "defaultImageCardDimensions", {
|
|
|
36
36
|
Object.defineProperty(exports, "fileCardImageViewSelectedSelector", {
|
|
37
37
|
enumerable: true,
|
|
38
38
|
get: function get() {
|
|
39
|
-
return
|
|
39
|
+
return _classnames.fileCardImageViewSelectedSelector;
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
42
|
Object.defineProperty(exports, "fileCardImageViewSelector", {
|
|
43
43
|
enumerable: true,
|
|
44
44
|
get: function get() {
|
|
45
|
-
return
|
|
45
|
+
return _classnames.fileCardImageViewSelector;
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
48
|
Object.defineProperty(exports, "inlinePlayerClassName", {
|
|
@@ -66,7 +66,7 @@ var _cardError = require("./utils/lightCards/cardError");
|
|
|
66
66
|
|
|
67
67
|
var _cardDimensions = require("./utils/cardDimensions");
|
|
68
68
|
|
|
69
|
-
var
|
|
69
|
+
var _classnames = require("./files/cardImageView/classnames");
|
|
70
70
|
|
|
71
71
|
var _inlinePlayer = require("./root/inlinePlayer");
|
|
72
72
|
|
|
@@ -3,12 +3,33 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.getRelevantFeatureFlagNames = exports.getRelevantFeatureFlagKeysWithAllProducts = exports.fireScreenEvent = exports.fireOperationalEvent = exports.fireCopiedEvent = exports.fireCommencedEvent = exports.REQUIRED_FEATURE_FLAGS = void 0;
|
|
7
|
+
|
|
8
|
+
var _mediaCommon = require("@atlaskit/media-common");
|
|
7
9
|
|
|
8
10
|
var _analytics = require("../../utils/analytics");
|
|
9
11
|
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
+
var REQUIRED_FEATURE_FLAGS = {
|
|
13
|
+
newCardExperience: true,
|
|
14
|
+
captions: true,
|
|
15
|
+
timestampOnVideo: true,
|
|
16
|
+
observedWidth: true,
|
|
17
|
+
mediaInline: false,
|
|
18
|
+
folderUploads: false
|
|
19
|
+
};
|
|
20
|
+
exports.REQUIRED_FEATURE_FLAGS = REQUIRED_FEATURE_FLAGS;
|
|
21
|
+
|
|
22
|
+
var getRelevantFeatureFlagNames = function getRelevantFeatureFlagNames() {
|
|
23
|
+
return (0, _mediaCommon.filterFeatureFlagNames)(REQUIRED_FEATURE_FLAGS);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
exports.getRelevantFeatureFlagNames = getRelevantFeatureFlagNames;
|
|
27
|
+
|
|
28
|
+
var getRelevantFeatureFlagKeysWithAllProducts = function getRelevantFeatureFlagKeysWithAllProducts() {
|
|
29
|
+
return (0, _mediaCommon.filterFeatureFlagKeysAllProducts)(REQUIRED_FEATURE_FLAGS);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
exports.getRelevantFeatureFlagKeysWithAllProducts = getRelevantFeatureFlagKeysWithAllProducts;
|
|
12
33
|
|
|
13
34
|
var fireOperationalEvent = function fireOperationalEvent(createAnalyticsEvent, status, fileAttributes, performanceAttributes, ssrReliability, error) {
|
|
14
35
|
var fireEvent = function fireEvent(payload) {
|
|
@@ -75,6 +75,10 @@ var _dimensionComparer = require("../../utils/dimensionComparer");
|
|
|
75
75
|
|
|
76
76
|
var _getMediaCardCursor = require("../../utils/getMediaCardCursor");
|
|
77
77
|
|
|
78
|
+
var _ufoExperiences = require("../../utils/ufoExperiences");
|
|
79
|
+
|
|
80
|
+
var _generateUniqueId = require("../../utils/generateUniqueId");
|
|
81
|
+
|
|
78
82
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
79
83
|
|
|
80
84
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -92,6 +96,8 @@ var CardBase = /*#__PURE__*/function (_Component) {
|
|
|
92
96
|
|
|
93
97
|
var _super = _createSuper(CardBase);
|
|
94
98
|
|
|
99
|
+
// An internalOccurrenceKey is a randomly generated value to differentiate various instances
|
|
100
|
+
// of Cards regardless of whether it shares the same file (either internal or external)
|
|
95
101
|
// We initialise timeElapsedTillCommenced
|
|
96
102
|
// to avoid extra branching on a possibly undefined value.
|
|
97
103
|
function CardBase(props) {
|
|
@@ -99,7 +105,12 @@ var CardBase = /*#__PURE__*/function (_Component) {
|
|
|
99
105
|
|
|
100
106
|
(0, _classCallCheck2.default)(this, CardBase);
|
|
101
107
|
_this = _super.call(this, props);
|
|
108
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "internalOccurrenceKey", (0, _generateUniqueId.generateUniqueId)());
|
|
102
109
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hasBeenMounted", false);
|
|
110
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fileStateFlags", {
|
|
111
|
+
wasStatusUploading: false,
|
|
112
|
+
wasStatusProcessing: false
|
|
113
|
+
});
|
|
103
114
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "viewportPreAnchorRef", /*#__PURE__*/(0, _react.createRef)());
|
|
104
115
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "viewportPostAnchorRef", /*#__PURE__*/(0, _react.createRef)());
|
|
105
116
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "ssrReliability", {
|
|
@@ -287,7 +298,7 @@ var CardBase = /*#__PURE__*/function (_Component) {
|
|
|
287
298
|
if ((0, _getCardPreview.isSSRClientPreview)(cardPreview)) {
|
|
288
299
|
_this.ssrReliability.client = failedSSRObject;
|
|
289
300
|
}
|
|
290
|
-
/*
|
|
301
|
+
/*
|
|
291
302
|
If the cardPreview failed and it comes from server (global scope / ssrData), it means that we have reused it in client and the error counts for both: server & client.
|
|
292
303
|
*/
|
|
293
304
|
|
|
@@ -343,7 +354,7 @@ var CardBase = /*#__PURE__*/function (_Component) {
|
|
|
343
354
|
status: 'success'
|
|
344
355
|
};
|
|
345
356
|
}
|
|
346
|
-
/*
|
|
357
|
+
/*
|
|
347
358
|
If the image loads successfully and it comes from server (global scope / ssrData), it means that we have reused it in client and the success counts for both: server & client.
|
|
348
359
|
*/
|
|
349
360
|
|
|
@@ -808,6 +819,7 @@ var CardBase = /*#__PURE__*/function (_Component) {
|
|
|
808
819
|
var isDifferent = (0, _mediaClient2.isDifferentIdentifier)(prevIdentifier, identifier);
|
|
809
820
|
var turnedVisible = !prevIsCardVisible && isCardVisible;
|
|
810
821
|
var isNewMediaClient = prevMediaClient !== mediaClient;
|
|
822
|
+
this.updateFileStateFlag(fileState);
|
|
811
823
|
|
|
812
824
|
if ((0, _mediaClient2.isExternalImageIdentifier)(identifier) && isDifferent) {
|
|
813
825
|
this.fireCommencedEvent();
|
|
@@ -883,6 +895,21 @@ var CardBase = /*#__PURE__*/function (_Component) {
|
|
|
883
895
|
this.fireCommencedEvent();
|
|
884
896
|
this.subscribeInternalFile(identifier);
|
|
885
897
|
}
|
|
898
|
+
}, {
|
|
899
|
+
key: "updateFileStateFlag",
|
|
900
|
+
value: function updateFileStateFlag(fileState) {
|
|
901
|
+
if (!fileState) {
|
|
902
|
+
return;
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
var status = fileState.status;
|
|
906
|
+
|
|
907
|
+
if (status === 'processing') {
|
|
908
|
+
this.fileStateFlags.wasStatusProcessing = true;
|
|
909
|
+
} else if (status === 'uploading') {
|
|
910
|
+
this.fileStateFlags.wasStatusUploading = true;
|
|
911
|
+
}
|
|
912
|
+
}
|
|
886
913
|
}, {
|
|
887
914
|
key: "subscribeInternalFile",
|
|
888
915
|
value: function subscribeInternalFile(identifier) {
|
|
@@ -950,6 +977,7 @@ var CardBase = /*#__PURE__*/function (_Component) {
|
|
|
950
977
|
error = _this$state7.error;
|
|
951
978
|
var createAnalyticsEvent = this.props.createAnalyticsEvent;
|
|
952
979
|
createAnalyticsEvent && (0, _cardAnalytics.fireOperationalEvent)(createAnalyticsEvent, status, this.fileAttributes, this.getPerformanceAttributes(), this.ssrReliability, error);
|
|
980
|
+
(0, _ufoExperiences.completeUfoExperience)(this.internalOccurrenceKey, status, this.fileAttributes, this.fileStateFlags, this.ssrReliability, (0, _cardAnalytics.getRelevantFeatureFlagKeysWithAllProducts)(), error);
|
|
953
981
|
}
|
|
954
982
|
}, {
|
|
955
983
|
key: "fireCommencedEvent",
|
|
@@ -961,6 +989,7 @@ var CardBase = /*#__PURE__*/function (_Component) {
|
|
|
961
989
|
durationSincePageStart: this.timeElapsedTillCommenced
|
|
962
990
|
}
|
|
963
991
|
});
|
|
992
|
+
(0, _ufoExperiences.startUfoExperience)(this.internalOccurrenceKey, (0, _cardAnalytics.getRelevantFeatureFlagKeysWithAllProducts)());
|
|
964
993
|
}
|
|
965
994
|
}, {
|
|
966
995
|
key: "actions",
|
|
@@ -1022,7 +1051,7 @@ var Card = (0, _mediaCommon.withMediaAnalyticsContext)({
|
|
|
1022
1051
|
componentName: 'mediaCard',
|
|
1023
1052
|
component: 'mediaCard'
|
|
1024
1053
|
}, {
|
|
1025
|
-
filterFeatureFlags: _cardAnalytics.
|
|
1054
|
+
filterFeatureFlags: (0, _cardAnalytics.getRelevantFeatureFlagNames)()
|
|
1026
1055
|
})((0, _analyticsNext.withAnalyticsEvents)()((0, _reactIntlNext.injectIntl)(CardBase, {
|
|
1027
1056
|
enforceContext: false
|
|
1028
1057
|
})));
|
|
@@ -297,7 +297,6 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
|
|
|
297
297
|
});
|
|
298
298
|
|
|
299
299
|
case 'processing':
|
|
300
|
-
case 'loading-preview':
|
|
301
300
|
return _objectSpread(_objectSpread({}, defaultConfig), {}, {
|
|
302
301
|
iconMessage: !didImageRender && !isZeroSize ? /*#__PURE__*/_react.default.createElement(_iconMessage.CreatingPreview, {
|
|
303
302
|
disableAnimation: disableAnimation
|
|
@@ -347,6 +346,7 @@ var CardViewBase = /*#__PURE__*/function (_React$Component) {
|
|
|
347
346
|
iconMessage: iconMessage
|
|
348
347
|
});
|
|
349
348
|
|
|
349
|
+
case 'loading-preview':
|
|
350
350
|
case 'loading':
|
|
351
351
|
default:
|
|
352
352
|
return _objectSpread(_objectSpread({}, defaultConfig), {}, {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.generateUniqueId = void 0;
|
|
7
|
+
|
|
8
|
+
var generateUniqueId = function generateUniqueId() {
|
|
9
|
+
return (performance.now().toString(36) + Math.random().toString(36)).replace(/\./g, '');
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
exports.generateUniqueId = generateUniqueId;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.startUfoExperience = exports.completeUfoExperience = void 0;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _ufo = require("@atlaskit/ufo");
|
|
13
|
+
|
|
14
|
+
var _version = require("../version.json");
|
|
15
|
+
|
|
16
|
+
var _analytics = require("./analytics");
|
|
17
|
+
|
|
18
|
+
var _mediaClient = require("@atlaskit/media-client");
|
|
19
|
+
|
|
20
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
21
|
+
|
|
22
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
23
|
+
|
|
24
|
+
var concurrentExperience;
|
|
25
|
+
|
|
26
|
+
var getExperience = function getExperience(id, featureFlagsKeys) {
|
|
27
|
+
if (!concurrentExperience) {
|
|
28
|
+
var inlineExperience = {
|
|
29
|
+
platform: {
|
|
30
|
+
component: 'media-card'
|
|
31
|
+
},
|
|
32
|
+
type: _ufo.ExperienceTypes.Experience,
|
|
33
|
+
performanceType: _ufo.ExperiencePerformanceTypes.InlineResult,
|
|
34
|
+
featureFlagsKeys: featureFlagsKeys
|
|
35
|
+
};
|
|
36
|
+
concurrentExperience = new _ufo.ConcurrentExperience('media-card-render', inlineExperience);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return concurrentExperience.getInstance(id);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
var startUfoExperience = function startUfoExperience(id, featureFlagsKeys) {
|
|
43
|
+
getExperience(id, featureFlagsKeys).start();
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
exports.startUfoExperience = startUfoExperience;
|
|
47
|
+
|
|
48
|
+
var completeUfoExperience = function completeUfoExperience(id, status, fileAttributes, fileStateFlags, ssrReliability, featureFlagsKeys, error) {
|
|
49
|
+
switch (status) {
|
|
50
|
+
case 'complete':
|
|
51
|
+
succeedUfoExperience(id, featureFlagsKeys, {
|
|
52
|
+
fileAttributes: fileAttributes,
|
|
53
|
+
ssrReliability: ssrReliability,
|
|
54
|
+
fileStateFlags: fileStateFlags
|
|
55
|
+
});
|
|
56
|
+
break;
|
|
57
|
+
|
|
58
|
+
case 'failed-processing':
|
|
59
|
+
failUfoExperience(id, featureFlagsKeys, {
|
|
60
|
+
fileAttributes: fileAttributes,
|
|
61
|
+
failReason: 'failed-processing',
|
|
62
|
+
ssrReliability: ssrReliability,
|
|
63
|
+
fileStateFlags: fileStateFlags
|
|
64
|
+
});
|
|
65
|
+
break;
|
|
66
|
+
|
|
67
|
+
case 'error':
|
|
68
|
+
error && failUfoExperience(id, featureFlagsKeys, _objectSpread(_objectSpread({
|
|
69
|
+
fileAttributes: fileAttributes
|
|
70
|
+
}, (0, _analytics.extractErrorInfo)(error)), {}, {
|
|
71
|
+
request: (0, _analytics.getRenderErrorRequestMetadata)(error),
|
|
72
|
+
ssrReliability: ssrReliability,
|
|
73
|
+
fileStateFlags: fileStateFlags
|
|
74
|
+
}));
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
exports.completeUfoExperience = completeUfoExperience;
|
|
80
|
+
|
|
81
|
+
var succeedUfoExperience = function succeedUfoExperience(id, featureFlagsKeys, properties) {
|
|
82
|
+
getExperience(id, featureFlagsKeys).success({
|
|
83
|
+
metadata: _objectSpread(_objectSpread({}, properties), {}, {
|
|
84
|
+
packageName: _version.name,
|
|
85
|
+
packageVersion: _version.version,
|
|
86
|
+
mediaEnvironment: (0, _mediaClient.getMediaEnvironment)(),
|
|
87
|
+
mediaRegion: (0, _mediaClient.getMediaRegion)()
|
|
88
|
+
})
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
var failUfoExperience = function failUfoExperience(id, featureFlagsKeys, properties) {
|
|
93
|
+
getExperience(id, featureFlagsKeys).failure({
|
|
94
|
+
metadata: _objectSpread(_objectSpread({}, properties), {}, {
|
|
95
|
+
packageName: _version.name,
|
|
96
|
+
packageVersion: _version.version,
|
|
97
|
+
mediaEnvironment: (0, _mediaClient.getMediaEnvironment)(),
|
|
98
|
+
mediaRegion: (0, _mediaClient.getMediaRegion)()
|
|
99
|
+
})
|
|
100
|
+
});
|
|
101
|
+
};
|
package/dist/cjs/version.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { fileCardImageViewSelector, fileCardImageViewSelectedSelector } from './files/cardImageView/classnames';
|
|
@@ -9,8 +9,7 @@ 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
|
-
|
|
13
|
-
export const fileCardImageViewSelectedSelector = 'media-file-card-view-selected';
|
|
12
|
+
import { fileCardImageViewSelectedSelector, fileCardImageViewSelector } from './classnames';
|
|
14
13
|
export class FileCardImageView extends Component {
|
|
15
14
|
constructor(...args) {
|
|
16
15
|
super(...args);
|
package/dist/es2019/index.js
CHANGED
|
@@ -2,6 +2,6 @@ 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, fileCardImageViewSelectedSelector } from './files/cardImageView';
|
|
5
|
+
export { fileCardImageViewSelector, fileCardImageViewSelectedSelector } from './files/cardImageView/classnames';
|
|
6
6
|
export { inlinePlayerClassName } from './root/inlinePlayer';
|
|
7
7
|
export { newFileExperienceClassName } from './root/card/cardConstants';
|
|
@@ -1,5 +1,15 @@
|
|
|
1
|
+
import { filterFeatureFlagNames, filterFeatureFlagKeysAllProducts } from '@atlaskit/media-common';
|
|
1
2
|
import { fireMediaCardEvent, getRenderSucceededEventPayload, getRenderErrorEventPayload, getRenderFailedFileStatusPayload, getCopiedFilePayload, getRenderCommencedEventPayload, getRenderPreviewableCardPayload } from '../../utils/analytics';
|
|
2
|
-
export const
|
|
3
|
+
export const REQUIRED_FEATURE_FLAGS = {
|
|
4
|
+
newCardExperience: true,
|
|
5
|
+
captions: true,
|
|
6
|
+
timestampOnVideo: true,
|
|
7
|
+
observedWidth: true,
|
|
8
|
+
mediaInline: false,
|
|
9
|
+
folderUploads: false
|
|
10
|
+
};
|
|
11
|
+
export const getRelevantFeatureFlagNames = () => filterFeatureFlagNames(REQUIRED_FEATURE_FLAGS);
|
|
12
|
+
export const getRelevantFeatureFlagKeysWithAllProducts = () => filterFeatureFlagKeysAllProducts(REQUIRED_FEATURE_FLAGS);
|
|
3
13
|
export const fireOperationalEvent = (createAnalyticsEvent, status, fileAttributes, performanceAttributes, ssrReliability, error) => {
|
|
4
14
|
const fireEvent = payload => fireMediaCardEvent(payload, createAnalyticsEvent);
|
|
5
15
|
|
|
@@ -16,21 +16,32 @@ import { getFileDetails } from '../../utils/metadata';
|
|
|
16
16
|
import { InlinePlayer } from '../inlinePlayer';
|
|
17
17
|
import { getFileAttributes, extractErrorInfo } from '../../utils/analytics';
|
|
18
18
|
import { isLocalPreviewError, MediaCardError, ensureMediaCardError, ImageLoadError } from '../../errors';
|
|
19
|
-
import { fireOperationalEvent, fireCommencedEvent,
|
|
19
|
+
import { fireOperationalEvent, fireCommencedEvent, getRelevantFeatureFlagNames, getRelevantFeatureFlagKeysWithAllProducts, fireCopiedEvent, fireScreenEvent } from './cardAnalytics';
|
|
20
20
|
import getDocument from '../../utils/document';
|
|
21
21
|
import { StoreSSRDataScript, getSSRData } from '../../utils/globalScope';
|
|
22
22
|
import { getCardStateFromFileState, createStateUpdater } from './cardState';
|
|
23
23
|
import { getMediaFeatureFlag } from '@atlaskit/media-common';
|
|
24
24
|
import { isBigger } from '../../utils/dimensionComparer';
|
|
25
25
|
import { getMediaCardCursor } from '../../utils/getMediaCardCursor';
|
|
26
|
+
import { completeUfoExperience, startUfoExperience } from '../../utils/ufoExperiences';
|
|
27
|
+
import { generateUniqueId } from '../../utils/generateUniqueId';
|
|
26
28
|
export class CardBase extends Component {
|
|
29
|
+
// An internalOccurrenceKey is a randomly generated value to differentiate various instances
|
|
30
|
+
// of Cards regardless of whether it shares the same file (either internal or external)
|
|
27
31
|
// We initialise timeElapsedTillCommenced
|
|
28
32
|
// to avoid extra branching on a possibly undefined value.
|
|
29
33
|
constructor(props) {
|
|
30
34
|
super(props);
|
|
31
35
|
|
|
36
|
+
_defineProperty(this, "internalOccurrenceKey", generateUniqueId());
|
|
37
|
+
|
|
32
38
|
_defineProperty(this, "hasBeenMounted", false);
|
|
33
39
|
|
|
40
|
+
_defineProperty(this, "fileStateFlags", {
|
|
41
|
+
wasStatusUploading: false,
|
|
42
|
+
wasStatusProcessing: false
|
|
43
|
+
});
|
|
44
|
+
|
|
34
45
|
_defineProperty(this, "viewportPreAnchorRef", /*#__PURE__*/createRef());
|
|
35
46
|
|
|
36
47
|
_defineProperty(this, "viewportPostAnchorRef", /*#__PURE__*/createRef());
|
|
@@ -183,7 +194,7 @@ export class CardBase extends Component {
|
|
|
183
194
|
if (isSSRClientPreview(cardPreview)) {
|
|
184
195
|
this.ssrReliability.client = failedSSRObject;
|
|
185
196
|
}
|
|
186
|
-
/*
|
|
197
|
+
/*
|
|
187
198
|
If the cardPreview failed and it comes from server (global scope / ssrData), it means that we have reused it in client and the error counts for both: server & client.
|
|
188
199
|
*/
|
|
189
200
|
|
|
@@ -240,7 +251,7 @@ export class CardBase extends Component {
|
|
|
240
251
|
status: 'success'
|
|
241
252
|
};
|
|
242
253
|
}
|
|
243
|
-
/*
|
|
254
|
+
/*
|
|
244
255
|
If the image loads successfully and it comes from server (global scope / ssrData), it means that we have reused it in client and the success counts for both: server & client.
|
|
245
256
|
*/
|
|
246
257
|
|
|
@@ -757,6 +768,7 @@ export class CardBase extends Component {
|
|
|
757
768
|
const isDifferent = isDifferentIdentifier(prevIdentifier, identifier);
|
|
758
769
|
const turnedVisible = !prevIsCardVisible && isCardVisible;
|
|
759
770
|
const isNewMediaClient = prevMediaClient !== mediaClient;
|
|
771
|
+
this.updateFileStateFlag(fileState);
|
|
760
772
|
|
|
761
773
|
if (isExternalImageIdentifier(identifier) && isDifferent) {
|
|
762
774
|
this.fireCommencedEvent();
|
|
@@ -833,6 +845,22 @@ export class CardBase extends Component {
|
|
|
833
845
|
this.subscribeInternalFile(identifier);
|
|
834
846
|
}
|
|
835
847
|
|
|
848
|
+
updateFileStateFlag(fileState) {
|
|
849
|
+
if (!fileState) {
|
|
850
|
+
return;
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
const {
|
|
854
|
+
status
|
|
855
|
+
} = fileState;
|
|
856
|
+
|
|
857
|
+
if (status === 'processing') {
|
|
858
|
+
this.fileStateFlags.wasStatusProcessing = true;
|
|
859
|
+
} else if (status === 'uploading') {
|
|
860
|
+
this.fileStateFlags.wasStatusUploading = true;
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
|
|
836
864
|
subscribeInternalFile(identifier) {
|
|
837
865
|
const {
|
|
838
866
|
mediaClient
|
|
@@ -902,6 +930,7 @@ export class CardBase extends Component {
|
|
|
902
930
|
createAnalyticsEvent
|
|
903
931
|
} = this.props;
|
|
904
932
|
createAnalyticsEvent && fireOperationalEvent(createAnalyticsEvent, status, this.fileAttributes, this.getPerformanceAttributes(), this.ssrReliability, error);
|
|
933
|
+
completeUfoExperience(this.internalOccurrenceKey, status, this.fileAttributes, this.fileStateFlags, this.ssrReliability, getRelevantFeatureFlagKeysWithAllProducts(), error);
|
|
905
934
|
}
|
|
906
935
|
|
|
907
936
|
fireCommencedEvent() {
|
|
@@ -914,6 +943,7 @@ export class CardBase extends Component {
|
|
|
914
943
|
durationSincePageStart: this.timeElapsedTillCommenced
|
|
915
944
|
}
|
|
916
945
|
});
|
|
946
|
+
startUfoExperience(this.internalOccurrenceKey, getRelevantFeatureFlagKeysWithAllProducts());
|
|
917
947
|
}
|
|
918
948
|
|
|
919
949
|
get actions() {
|
|
@@ -971,7 +1001,7 @@ export const Card = withMediaAnalyticsContext({
|
|
|
971
1001
|
componentName: 'mediaCard',
|
|
972
1002
|
component: 'mediaCard'
|
|
973
1003
|
}, {
|
|
974
|
-
filterFeatureFlags:
|
|
1004
|
+
filterFeatureFlags: getRelevantFeatureFlagNames()
|
|
975
1005
|
})(withAnalyticsEvents()(injectIntl(CardBase, {
|
|
976
1006
|
enforceContext: false
|
|
977
1007
|
})));
|
|
@@ -237,7 +237,6 @@ export class CardViewBase extends React.Component {
|
|
|
237
237
|
};
|
|
238
238
|
|
|
239
239
|
case 'processing':
|
|
240
|
-
case 'loading-preview':
|
|
241
240
|
return { ...defaultConfig,
|
|
242
241
|
iconMessage: !didImageRender && !isZeroSize ? /*#__PURE__*/React.createElement(CreatingPreview, {
|
|
243
242
|
disableAnimation: disableAnimation
|
|
@@ -286,6 +285,7 @@ export class CardViewBase extends React.Component {
|
|
|
286
285
|
iconMessage
|
|
287
286
|
};
|
|
288
287
|
|
|
288
|
+
case 'loading-preview':
|
|
289
289
|
case 'loading':
|
|
290
290
|
default:
|
|
291
291
|
return { ...defaultConfig,
|