@atlaskit/media-common 2.10.2 → 2.12.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/index.js +39 -1
- package/dist/cjs/mediaFeatureFlags.js +30 -7
- package/dist/cjs/utils/helpers.js +77 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/index.js +3 -2
- package/dist/es2019/mediaFeatureFlags.js +11 -5
- package/dist/es2019/utils/helpers.js +29 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/index.js +3 -2
- package/dist/esm/mediaFeatureFlags.js +23 -5
- package/dist/esm/utils/helpers.js +53 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/index.d.ts +3 -2
- package/dist/types/mediaFeatureFlags.d.ts +3 -0
- package/dist/types/utils/helpers.d.ts +9 -0
- package/package.json +4 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @atlaskit/media-common
|
|
2
2
|
|
|
3
|
+
## 2.12.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`bac667f95d5`](https://bitbucket.org/atlassian/atlassian-frontend/commits/bac667f95d5) - Export utility filterFeatureFlagNames and type RequiredMediaFeatureFlags
|
|
8
|
+
|
|
9
|
+
## 2.11.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [`8742dbe70bd`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8742dbe70bd) - MEX-1102 Removed lodash dependencies from media component and converted all to local functions (lightweight helpers)
|
|
14
|
+
|
|
15
|
+
## 2.10.3
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [`5293a48368e`](https://bitbucket.org/atlassian/atlassian-frontend/commits/5293a48368e) - fix image size in layout with ref and width observer
|
|
20
|
+
|
|
3
21
|
## 2.10.2
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/cjs/index.js
CHANGED
|
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "areEqualFeatureFlags", {
|
|
|
15
15
|
return _mediaFeatureFlags.areEqualFeatureFlags;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "debounce", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _helpers.debounce;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
18
24
|
Object.defineProperty(exports, "defaultMediaFeatureFlags", {
|
|
19
25
|
enumerable: true,
|
|
20
26
|
get: function get() {
|
|
@@ -27,6 +33,12 @@ Object.defineProperty(exports, "downloadUrl", {
|
|
|
27
33
|
return _downloadUrl.downloadUrl;
|
|
28
34
|
}
|
|
29
35
|
});
|
|
36
|
+
Object.defineProperty(exports, "filterFeatureFlagNames", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function get() {
|
|
39
|
+
return _mediaFeatureFlags.filterFeatureFlagNames;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
30
42
|
Object.defineProperty(exports, "getMediaFeatureFlag", {
|
|
31
43
|
enumerable: true,
|
|
32
44
|
get: function get() {
|
|
@@ -81,6 +93,12 @@ Object.defineProperty(exports, "isMimeTypeSupportedByServer", {
|
|
|
81
93
|
return _mediaTypeUtils.isMimeTypeSupportedByServer;
|
|
82
94
|
}
|
|
83
95
|
});
|
|
96
|
+
Object.defineProperty(exports, "isUndefined", {
|
|
97
|
+
enumerable: true,
|
|
98
|
+
get: function get() {
|
|
99
|
+
return _helpers.isUndefined;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
84
102
|
Object.defineProperty(exports, "isUnknownMimeTypeSupportedByServer", {
|
|
85
103
|
enumerable: true,
|
|
86
104
|
get: function get() {
|
|
@@ -93,6 +111,24 @@ Object.defineProperty(exports, "isVideoMimeTypeSupportedByServer", {
|
|
|
93
111
|
return _mediaTypeUtils.isVideoMimeTypeSupportedByServer;
|
|
94
112
|
}
|
|
95
113
|
});
|
|
114
|
+
Object.defineProperty(exports, "matches", {
|
|
115
|
+
enumerable: true,
|
|
116
|
+
get: function get() {
|
|
117
|
+
return _helpers.matches;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
Object.defineProperty(exports, "omitBy", {
|
|
121
|
+
enumerable: true,
|
|
122
|
+
get: function get() {
|
|
123
|
+
return _helpers.omitBy;
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
Object.defineProperty(exports, "pick", {
|
|
127
|
+
enumerable: true,
|
|
128
|
+
get: function get() {
|
|
129
|
+
return _helpers.pick;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
96
132
|
Object.defineProperty(exports, "useMemoizeFeatureFlags", {
|
|
97
133
|
enumerable: true,
|
|
98
134
|
get: function get() {
|
|
@@ -114,4 +150,6 @@ var _withMediaAnalyticsContext = require("./analytics/withMediaAnalyticsContext"
|
|
|
114
150
|
|
|
115
151
|
var _constants = require("./analytics/constants");
|
|
116
152
|
|
|
117
|
-
var _mediaTypeUtils = require("./mediaTypeUtils");
|
|
153
|
+
var _mediaTypeUtils = require("./mediaTypeUtils");
|
|
154
|
+
|
|
155
|
+
var _helpers = require("./utils/helpers");
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
|
-
exports.defaultMediaFeatureFlags = exports.areEqualFeatureFlags = void 0;
|
|
8
|
+
exports.filterFeatureFlagNames = exports.defaultMediaFeatureFlags = exports.areEqualFeatureFlags = void 0;
|
|
7
9
|
exports.getMediaFeatureFlag = getMediaFeatureFlag;
|
|
8
10
|
exports.useMemoizeFeatureFlags = void 0;
|
|
9
11
|
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
10
14
|
var _react = require("react");
|
|
11
15
|
|
|
12
16
|
var _mediaFeatureFlagLocal = require("./mediaFeatureFlag-local");
|
|
@@ -19,7 +23,8 @@ var defaultMediaFeatureFlags = {
|
|
|
19
23
|
// We can't yet switch this feature on
|
|
20
24
|
// TODO https://product-fabric.atlassian.net/browse/MEX-104
|
|
21
25
|
folderUploads: false,
|
|
22
|
-
timestampOnVideo: false
|
|
26
|
+
timestampOnVideo: false,
|
|
27
|
+
observedWidth: false
|
|
23
28
|
};
|
|
24
29
|
/**
|
|
25
30
|
* Public accessor from components to fallback to defaults if flags not passed,
|
|
@@ -61,7 +66,7 @@ Object.keys(defaultMediaFeatureFlags).forEach(function (flagName) {
|
|
|
61
66
|
// eslint-disable-next-line no-console
|
|
62
67
|
console.info("%c* LOCAL * MediaFeatureFlag.".concat(flagName, " = ").concat(localOverride), 'font-weight:bold;color:cyan');
|
|
63
68
|
}
|
|
64
|
-
});
|
|
69
|
+
}); // With this type we ensure the object will contain all the flags
|
|
65
70
|
|
|
66
71
|
var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
|
|
67
72
|
if (!ffA && !ffB) {
|
|
@@ -70,15 +75,15 @@ var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
|
|
|
70
75
|
|
|
71
76
|
if (!ffA || !ffB) {
|
|
72
77
|
return false;
|
|
73
|
-
}
|
|
74
|
-
|
|
78
|
+
}
|
|
75
79
|
|
|
76
80
|
var results = {
|
|
77
81
|
newCardExperience: ffA.newCardExperience === ffB.newCardExperience,
|
|
78
82
|
captions: ffA.captions === ffB.captions,
|
|
79
83
|
mediaInline: ffA.mediaInline === ffB.mediaInline,
|
|
80
84
|
folderUploads: ffA.folderUploads === ffB.folderUploads,
|
|
81
|
-
timestampOnVideo: ffA.timestampOnVideo === ffB.timestampOnVideo
|
|
85
|
+
timestampOnVideo: ffA.timestampOnVideo === ffB.timestampOnVideo,
|
|
86
|
+
observedWidth: ffA.observedWidth === ffB.observedWidth
|
|
82
87
|
};
|
|
83
88
|
return Object.values(results).every(function (result) {
|
|
84
89
|
return result;
|
|
@@ -97,4 +102,22 @@ var useMemoizeFeatureFlags = function useMemoizeFeatureFlags(featureFlags) {
|
|
|
97
102
|
return ref.current;
|
|
98
103
|
};
|
|
99
104
|
|
|
100
|
-
exports.useMemoizeFeatureFlags = useMemoizeFeatureFlags;
|
|
105
|
+
exports.useMemoizeFeatureFlags = useMemoizeFeatureFlags;
|
|
106
|
+
|
|
107
|
+
var filterFeatureFlagNames = function filterFeatureFlagNames(flags) {
|
|
108
|
+
var pairs = Object.entries(flags);
|
|
109
|
+
return pairs.filter(function (_ref) {
|
|
110
|
+
var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
|
|
111
|
+
_key = _ref2[0],
|
|
112
|
+
value = _ref2[1];
|
|
113
|
+
|
|
114
|
+
return !!value;
|
|
115
|
+
}).map(function (_ref3) {
|
|
116
|
+
var _ref4 = (0, _slicedToArray2.default)(_ref3, 1),
|
|
117
|
+
key = _ref4[0];
|
|
118
|
+
|
|
119
|
+
return key;
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
exports.filterFeatureFlagNames = filterFeatureFlagNames;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.pick = exports.omitBy = exports.matches = exports.isUndefined = exports.debounce = void 0;
|
|
9
|
+
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
|
|
12
|
+
var isUndefined = function isUndefined(value) {
|
|
13
|
+
return value === undefined;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
exports.isUndefined = isUndefined;
|
|
17
|
+
|
|
18
|
+
var pick = function pick(obj) {
|
|
19
|
+
var keys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
20
|
+
|
|
21
|
+
if (obj === undefined) {
|
|
22
|
+
return {};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return Object.fromEntries(Object.entries(obj).filter(function (_ref) {
|
|
26
|
+
var _ref2 = (0, _slicedToArray2.default)(_ref, 1),
|
|
27
|
+
k = _ref2[0];
|
|
28
|
+
|
|
29
|
+
return keys.includes(k);
|
|
30
|
+
}));
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
exports.pick = pick;
|
|
34
|
+
|
|
35
|
+
var omitBy = function omitBy(obj, predicate) {
|
|
36
|
+
return Object.fromEntries(Object.entries(obj).filter(function (_ref3) {
|
|
37
|
+
var _ref4 = (0, _slicedToArray2.default)(_ref3, 2),
|
|
38
|
+
k = _ref4[0],
|
|
39
|
+
v = _ref4[1];
|
|
40
|
+
|
|
41
|
+
return !predicate(v);
|
|
42
|
+
}));
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
exports.omitBy = omitBy;
|
|
46
|
+
|
|
47
|
+
var debounce = function debounce(func, wait) {
|
|
48
|
+
var timeout;
|
|
49
|
+
return function () {
|
|
50
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
51
|
+
args[_key] = arguments[_key];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
clearTimeout(timeout);
|
|
55
|
+
timeout = setTimeout(function () {
|
|
56
|
+
return func.apply(void 0, args);
|
|
57
|
+
}, wait);
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
exports.debounce = debounce;
|
|
62
|
+
|
|
63
|
+
var matches = function matches(srcObj) {
|
|
64
|
+
return function (obj) {
|
|
65
|
+
var key;
|
|
66
|
+
|
|
67
|
+
for (key in srcObj) {
|
|
68
|
+
if (obj[key] === undefined || obj[key] !== srcObj[key]) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return true;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
exports.matches = matches;
|
package/dist/cjs/version.json
CHANGED
package/dist/es2019/index.js
CHANGED
|
@@ -2,9 +2,10 @@ export { downloadUrl } from './downloadUrl'; // Warning! You can't add new media
|
|
|
2
2
|
// See packages/media/media-core/src/__tests__/cache-backward-compatibility.spec.ts
|
|
3
3
|
|
|
4
4
|
// Media Feature Flags
|
|
5
|
-
export { getMediaFeatureFlag, defaultMediaFeatureFlags, areEqualFeatureFlags, useMemoizeFeatureFlags } from './mediaFeatureFlags';
|
|
5
|
+
export { getMediaFeatureFlag, defaultMediaFeatureFlags, areEqualFeatureFlags, useMemoizeFeatureFlags, filterFeatureFlagNames } from './mediaFeatureFlags';
|
|
6
6
|
// Analytics context
|
|
7
7
|
export { withMediaAnalyticsContext } from './analytics/withMediaAnalyticsContext'; // Analytics constants
|
|
8
8
|
|
|
9
9
|
export { ANALYTICS_MEDIA_CHANNEL } from './analytics/constants';
|
|
10
|
-
export { getMediaTypeFromMimeType, isImageMimeTypeSupportedByBrowser, isDocumentMimeTypeSupportedByBrowser, isMimeTypeSupportedByBrowser, isImageMimeTypeSupportedByServer, isDocumentMimeTypeSupportedByServer, isAudioMimeTypeSupportedByServer, isVideoMimeTypeSupportedByServer, isUnknownMimeTypeSupportedByServer, isMimeTypeSupportedByServer } from './mediaTypeUtils';
|
|
10
|
+
export { getMediaTypeFromMimeType, isImageMimeTypeSupportedByBrowser, isDocumentMimeTypeSupportedByBrowser, isMimeTypeSupportedByBrowser, isImageMimeTypeSupportedByServer, isDocumentMimeTypeSupportedByServer, isAudioMimeTypeSupportedByServer, isVideoMimeTypeSupportedByServer, isUnknownMimeTypeSupportedByServer, isMimeTypeSupportedByServer } from './mediaTypeUtils';
|
|
11
|
+
export { isUndefined, pick, omitBy, debounce, matches } from './utils/helpers';
|
|
@@ -9,7 +9,8 @@ export const defaultMediaFeatureFlags = {
|
|
|
9
9
|
// We can't yet switch this feature on
|
|
10
10
|
// TODO https://product-fabric.atlassian.net/browse/MEX-104
|
|
11
11
|
folderUploads: false,
|
|
12
|
-
timestampOnVideo: false
|
|
12
|
+
timestampOnVideo: false,
|
|
13
|
+
observedWidth: false
|
|
13
14
|
};
|
|
14
15
|
/**
|
|
15
16
|
* Public accessor from components to fallback to defaults if flags not passed,
|
|
@@ -48,7 +49,8 @@ Object.keys(defaultMediaFeatureFlags).forEach(flagName => {
|
|
|
48
49
|
// eslint-disable-next-line no-console
|
|
49
50
|
console.info(`%c* LOCAL * MediaFeatureFlag.${flagName} = ${localOverride}`, 'font-weight:bold;color:cyan');
|
|
50
51
|
}
|
|
51
|
-
});
|
|
52
|
+
}); // With this type we ensure the object will contain all the flags
|
|
53
|
+
|
|
52
54
|
export const areEqualFeatureFlags = (ffA, ffB) => {
|
|
53
55
|
if (!ffA && !ffB) {
|
|
54
56
|
return true;
|
|
@@ -56,15 +58,15 @@ export const areEqualFeatureFlags = (ffA, ffB) => {
|
|
|
56
58
|
|
|
57
59
|
if (!ffA || !ffB) {
|
|
58
60
|
return false;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
+
}
|
|
61
62
|
|
|
62
63
|
const results = {
|
|
63
64
|
newCardExperience: ffA.newCardExperience === ffB.newCardExperience,
|
|
64
65
|
captions: ffA.captions === ffB.captions,
|
|
65
66
|
mediaInline: ffA.mediaInline === ffB.mediaInline,
|
|
66
67
|
folderUploads: ffA.folderUploads === ffB.folderUploads,
|
|
67
|
-
timestampOnVideo: ffA.timestampOnVideo === ffB.timestampOnVideo
|
|
68
|
+
timestampOnVideo: ffA.timestampOnVideo === ffB.timestampOnVideo,
|
|
69
|
+
observedWidth: ffA.observedWidth === ffB.observedWidth
|
|
68
70
|
};
|
|
69
71
|
return Object.values(results).every(result => result);
|
|
70
72
|
};
|
|
@@ -76,4 +78,8 @@ export const useMemoizeFeatureFlags = featureFlags => {
|
|
|
76
78
|
}
|
|
77
79
|
|
|
78
80
|
return ref.current;
|
|
81
|
+
};
|
|
82
|
+
export const filterFeatureFlagNames = flags => {
|
|
83
|
+
const pairs = Object.entries(flags);
|
|
84
|
+
return pairs.filter(([_key, value]) => !!value).map(([key]) => key);
|
|
79
85
|
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const isUndefined = value => value === undefined;
|
|
2
|
+
export const pick = (obj, keys = []) => {
|
|
3
|
+
if (obj === undefined) {
|
|
4
|
+
return {};
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
return Object.fromEntries(Object.entries(obj).filter(([k]) => keys.includes(k)));
|
|
8
|
+
};
|
|
9
|
+
export const omitBy = (obj, predicate) => Object.fromEntries(Object.entries(obj).filter(([k, v]) => !predicate(v)));
|
|
10
|
+
export const debounce = (func, wait) => {
|
|
11
|
+
let timeout;
|
|
12
|
+
return (...args) => {
|
|
13
|
+
clearTimeout(timeout);
|
|
14
|
+
timeout = setTimeout(() => func(...args), wait);
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export const matches = srcObj => {
|
|
18
|
+
return obj => {
|
|
19
|
+
let key;
|
|
20
|
+
|
|
21
|
+
for (key in srcObj) {
|
|
22
|
+
if (obj[key] === undefined || obj[key] !== srcObj[key]) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return true;
|
|
28
|
+
};
|
|
29
|
+
};
|
package/dist/es2019/version.json
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -2,9 +2,10 @@ export { downloadUrl } from './downloadUrl'; // Warning! You can't add new media
|
|
|
2
2
|
// See packages/media/media-core/src/__tests__/cache-backward-compatibility.spec.ts
|
|
3
3
|
|
|
4
4
|
// Media Feature Flags
|
|
5
|
-
export { getMediaFeatureFlag, defaultMediaFeatureFlags, areEqualFeatureFlags, useMemoizeFeatureFlags } from './mediaFeatureFlags';
|
|
5
|
+
export { getMediaFeatureFlag, defaultMediaFeatureFlags, areEqualFeatureFlags, useMemoizeFeatureFlags, filterFeatureFlagNames } from './mediaFeatureFlags';
|
|
6
6
|
// Analytics context
|
|
7
7
|
export { withMediaAnalyticsContext } from './analytics/withMediaAnalyticsContext'; // Analytics constants
|
|
8
8
|
|
|
9
9
|
export { ANALYTICS_MEDIA_CHANNEL } from './analytics/constants';
|
|
10
|
-
export { getMediaTypeFromMimeType, isImageMimeTypeSupportedByBrowser, isDocumentMimeTypeSupportedByBrowser, isMimeTypeSupportedByBrowser, isImageMimeTypeSupportedByServer, isDocumentMimeTypeSupportedByServer, isAudioMimeTypeSupportedByServer, isVideoMimeTypeSupportedByServer, isUnknownMimeTypeSupportedByServer, isMimeTypeSupportedByServer } from './mediaTypeUtils';
|
|
10
|
+
export { getMediaTypeFromMimeType, isImageMimeTypeSupportedByBrowser, isDocumentMimeTypeSupportedByBrowser, isMimeTypeSupportedByBrowser, isImageMimeTypeSupportedByServer, isDocumentMimeTypeSupportedByServer, isAudioMimeTypeSupportedByServer, isVideoMimeTypeSupportedByServer, isUnknownMimeTypeSupportedByServer, isMimeTypeSupportedByServer } from './mediaTypeUtils';
|
|
11
|
+
export { isUndefined, pick, omitBy, debounce, matches } from './utils/helpers';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
1
2
|
import { useRef } from 'react';
|
|
2
3
|
import { getLocalMediaFeatureFlag } from './mediaFeatureFlag-local'; // Media feature flags - type and defaults defined here in one source of truth
|
|
3
4
|
|
|
@@ -9,7 +10,8 @@ export var defaultMediaFeatureFlags = {
|
|
|
9
10
|
// We can't yet switch this feature on
|
|
10
11
|
// TODO https://product-fabric.atlassian.net/browse/MEX-104
|
|
11
12
|
folderUploads: false,
|
|
12
|
-
timestampOnVideo: false
|
|
13
|
+
timestampOnVideo: false,
|
|
14
|
+
observedWidth: false
|
|
13
15
|
};
|
|
14
16
|
/**
|
|
15
17
|
* Public accessor from components to fallback to defaults if flags not passed,
|
|
@@ -48,7 +50,8 @@ Object.keys(defaultMediaFeatureFlags).forEach(function (flagName) {
|
|
|
48
50
|
// eslint-disable-next-line no-console
|
|
49
51
|
console.info("%c* LOCAL * MediaFeatureFlag.".concat(flagName, " = ").concat(localOverride), 'font-weight:bold;color:cyan');
|
|
50
52
|
}
|
|
51
|
-
});
|
|
53
|
+
}); // With this type we ensure the object will contain all the flags
|
|
54
|
+
|
|
52
55
|
export var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
|
|
53
56
|
if (!ffA && !ffB) {
|
|
54
57
|
return true;
|
|
@@ -56,15 +59,15 @@ export var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
|
|
|
56
59
|
|
|
57
60
|
if (!ffA || !ffB) {
|
|
58
61
|
return false;
|
|
59
|
-
}
|
|
60
|
-
|
|
62
|
+
}
|
|
61
63
|
|
|
62
64
|
var results = {
|
|
63
65
|
newCardExperience: ffA.newCardExperience === ffB.newCardExperience,
|
|
64
66
|
captions: ffA.captions === ffB.captions,
|
|
65
67
|
mediaInline: ffA.mediaInline === ffB.mediaInline,
|
|
66
68
|
folderUploads: ffA.folderUploads === ffB.folderUploads,
|
|
67
|
-
timestampOnVideo: ffA.timestampOnVideo === ffB.timestampOnVideo
|
|
69
|
+
timestampOnVideo: ffA.timestampOnVideo === ffB.timestampOnVideo,
|
|
70
|
+
observedWidth: ffA.observedWidth === ffB.observedWidth
|
|
68
71
|
};
|
|
69
72
|
return Object.values(results).every(function (result) {
|
|
70
73
|
return result;
|
|
@@ -78,4 +81,19 @@ export var useMemoizeFeatureFlags = function useMemoizeFeatureFlags(featureFlags
|
|
|
78
81
|
}
|
|
79
82
|
|
|
80
83
|
return ref.current;
|
|
84
|
+
};
|
|
85
|
+
export var filterFeatureFlagNames = function filterFeatureFlagNames(flags) {
|
|
86
|
+
var pairs = Object.entries(flags);
|
|
87
|
+
return pairs.filter(function (_ref) {
|
|
88
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
89
|
+
_key = _ref2[0],
|
|
90
|
+
value = _ref2[1];
|
|
91
|
+
|
|
92
|
+
return !!value;
|
|
93
|
+
}).map(function (_ref3) {
|
|
94
|
+
var _ref4 = _slicedToArray(_ref3, 1),
|
|
95
|
+
key = _ref4[0];
|
|
96
|
+
|
|
97
|
+
return key;
|
|
98
|
+
});
|
|
81
99
|
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
+
export var isUndefined = function isUndefined(value) {
|
|
3
|
+
return value === undefined;
|
|
4
|
+
};
|
|
5
|
+
export var pick = function pick(obj) {
|
|
6
|
+
var keys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
7
|
+
|
|
8
|
+
if (obj === undefined) {
|
|
9
|
+
return {};
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return Object.fromEntries(Object.entries(obj).filter(function (_ref) {
|
|
13
|
+
var _ref2 = _slicedToArray(_ref, 1),
|
|
14
|
+
k = _ref2[0];
|
|
15
|
+
|
|
16
|
+
return keys.includes(k);
|
|
17
|
+
}));
|
|
18
|
+
};
|
|
19
|
+
export var omitBy = function omitBy(obj, predicate) {
|
|
20
|
+
return Object.fromEntries(Object.entries(obj).filter(function (_ref3) {
|
|
21
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
22
|
+
k = _ref4[0],
|
|
23
|
+
v = _ref4[1];
|
|
24
|
+
|
|
25
|
+
return !predicate(v);
|
|
26
|
+
}));
|
|
27
|
+
};
|
|
28
|
+
export var debounce = function debounce(func, wait) {
|
|
29
|
+
var timeout;
|
|
30
|
+
return function () {
|
|
31
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
32
|
+
args[_key] = arguments[_key];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
clearTimeout(timeout);
|
|
36
|
+
timeout = setTimeout(function () {
|
|
37
|
+
return func.apply(void 0, args);
|
|
38
|
+
}, wait);
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export var matches = function matches(srcObj) {
|
|
42
|
+
return function (obj) {
|
|
43
|
+
var key;
|
|
44
|
+
|
|
45
|
+
for (key in srcObj) {
|
|
46
|
+
if (obj[key] === undefined || obj[key] !== srcObj[key]) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return true;
|
|
52
|
+
};
|
|
53
|
+
};
|
package/dist/esm/version.json
CHANGED
package/dist/types/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { downloadUrl } from './downloadUrl';
|
|
2
2
|
export declare type MediaType = 'doc' | 'audio' | 'video' | 'image' | 'archive' | 'unknown';
|
|
3
3
|
export declare type FileStatus = 'uploading' | 'processing' | 'processed' | 'error' | 'failed-processing';
|
|
4
|
-
export { getMediaFeatureFlag, defaultMediaFeatureFlags, areEqualFeatureFlags, useMemoizeFeatureFlags, } from './mediaFeatureFlags';
|
|
5
|
-
export type { MediaFeatureFlags, WithMediaFeatureFlags, } from './mediaFeatureFlags';
|
|
4
|
+
export { getMediaFeatureFlag, defaultMediaFeatureFlags, areEqualFeatureFlags, useMemoizeFeatureFlags, filterFeatureFlagNames, } from './mediaFeatureFlags';
|
|
5
|
+
export type { MediaFeatureFlags, WithMediaFeatureFlags, RequiredMediaFeatureFlags, } from './mediaFeatureFlags';
|
|
6
6
|
export interface NumericalCardDimensions {
|
|
7
7
|
width: number;
|
|
8
8
|
height: number;
|
|
@@ -12,3 +12,4 @@ export { withMediaAnalyticsContext } from './analytics/withMediaAnalyticsContext
|
|
|
12
12
|
export { ANALYTICS_MEDIA_CHANNEL } from './analytics/constants';
|
|
13
13
|
export { getMediaTypeFromMimeType, isImageMimeTypeSupportedByBrowser, isDocumentMimeTypeSupportedByBrowser, isMimeTypeSupportedByBrowser, isImageMimeTypeSupportedByServer, isDocumentMimeTypeSupportedByServer, isAudioMimeTypeSupportedByServer, isVideoMimeTypeSupportedByServer, isUnknownMimeTypeSupportedByServer, isMimeTypeSupportedByServer, } from './mediaTypeUtils';
|
|
14
14
|
export declare type SSR = 'client' | 'server';
|
|
15
|
+
export { isUndefined, pick, omitBy, debounce, matches } from './utils/helpers';
|
|
@@ -4,6 +4,7 @@ export interface MediaFeatureFlags {
|
|
|
4
4
|
mediaInline?: boolean;
|
|
5
5
|
folderUploads?: boolean;
|
|
6
6
|
timestampOnVideo?: boolean;
|
|
7
|
+
observedWidth?: boolean;
|
|
7
8
|
}
|
|
8
9
|
export interface WithMediaFeatureFlags {
|
|
9
10
|
featureFlags?: MediaFeatureFlags;
|
|
@@ -20,5 +21,7 @@ export declare const defaultMediaFeatureFlags: Required<MediaFeatureFlags>;
|
|
|
20
21
|
* (you will see a warning in console if override used)
|
|
21
22
|
* */
|
|
22
23
|
export declare function getMediaFeatureFlag<T = boolean>(flagName: keyof MediaFeatureFlags, featureFlags?: MediaFeatureFlags): T;
|
|
24
|
+
export declare type RequiredMediaFeatureFlags = Record<keyof Required<MediaFeatureFlags>, boolean>;
|
|
23
25
|
export declare const areEqualFeatureFlags: (ffA?: MediaFeatureFlags | undefined, ffB?: MediaFeatureFlags | undefined) => boolean;
|
|
24
26
|
export declare const useMemoizeFeatureFlags: (featureFlags?: MediaFeatureFlags | undefined) => MediaFeatureFlags | undefined;
|
|
27
|
+
export declare const filterFeatureFlagNames: (flags: RequiredMediaFeatureFlags) => Array<keyof MediaFeatureFlags>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const isUndefined: (value: any) => boolean;
|
|
2
|
+
export declare const pick: (obj?: Object | undefined, keys?: Array<String>) => {
|
|
3
|
+
[k: string]: any;
|
|
4
|
+
};
|
|
5
|
+
export declare const omitBy: (obj: Object, predicate: Function) => {
|
|
6
|
+
[k: string]: any;
|
|
7
|
+
};
|
|
8
|
+
export declare const debounce: (func: Function, wait: number) => (...args: any[]) => void;
|
|
9
|
+
export declare const matches: (srcObj: Object) => (obj: Object) => boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/media-common",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.12.0",
|
|
4
4
|
"description": "Includes common utilities used by other media packages",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"scripts": {},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@atlaskit/analytics-gas-types": "^5.0.5",
|
|
36
|
-
"@atlaskit/analytics-namespaced-context": "^6.
|
|
36
|
+
"@atlaskit/analytics-namespaced-context": "^6.4.0",
|
|
37
37
|
"@atlaskit/analytics-next": "^8.1.1",
|
|
38
38
|
"@atlaskit/section-message": "^6.0.0",
|
|
39
39
|
"@babel/runtime": "^7.0.0"
|
|
@@ -44,13 +44,12 @@
|
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@atlaskit/docs": "*",
|
|
47
|
-
"@atlaskit/media-test-helpers": "^29.
|
|
47
|
+
"@atlaskit/media-test-helpers": "^29.4.0",
|
|
48
48
|
"@atlassian/atlassian-frontend-prettier-config-1.0.1": "npm:@atlassian/atlassian-frontend-prettier-config@1.0.1",
|
|
49
49
|
"enzyme": "^3.10.0",
|
|
50
|
-
"lodash": "^4.17.21",
|
|
51
50
|
"react": "^16.8.0",
|
|
52
51
|
"react-dom": "^16.8.0",
|
|
53
|
-
"typescript": "3.9.
|
|
52
|
+
"typescript": "3.9.10"
|
|
54
53
|
},
|
|
55
54
|
"prettier": "@atlassian/atlassian-frontend-prettier-config-1.0.1"
|
|
56
55
|
}
|