@atlaskit/media-common 2.19.1 → 3.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 (51) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/analytics/index.js +0 -2
  3. package/dist/cjs/analytics/withMediaAnalyticsContext.js +3 -17
  4. package/dist/cjs/docs/index.js +0 -2
  5. package/dist/cjs/docs/media-use-only.js +0 -8
  6. package/dist/cjs/docs/rxjs-notice.js +0 -4
  7. package/dist/cjs/downloadUrl.js +0 -6
  8. package/dist/cjs/index.js +6 -6
  9. package/dist/cjs/mediaFeatureFlag-local.js +2 -4
  10. package/dist/cjs/mediaFeatureFlags/index.js +0 -1
  11. package/dist/cjs/mediaFeatureFlags/mediaFeatureFlags.js +19 -38
  12. package/dist/cjs/mediaFeatureFlags/productKeys.js +0 -6
  13. package/dist/cjs/mediaFeatureFlags/types.js +2 -0
  14. package/dist/cjs/mediaTypeUtils/index.js +0 -10
  15. package/dist/cjs/mediaTypeUtils/isArchive.js +0 -2
  16. package/dist/cjs/mediaTypeUtils/isMimeTypeSupportedByBrowser.js +3 -12
  17. package/dist/cjs/mediaTypeUtils/isMimeTypeSupportedByServer.js +27 -26
  18. package/dist/cjs/utils/helpers.js +3 -28
  19. package/dist/cjs/version.json +1 -1
  20. package/dist/es2019/analytics/index.js +3 -1
  21. package/dist/es2019/analytics/withMediaAnalyticsContext.js +9 -7
  22. package/dist/es2019/docs/media-use-only.js +0 -4
  23. package/dist/es2019/downloadUrl.js +0 -4
  24. package/dist/es2019/index.js +5 -3
  25. package/dist/es2019/mediaFeatureFlag-local.js +2 -2
  26. package/dist/es2019/mediaFeatureFlags/mediaFeatureFlags.js +16 -16
  27. package/dist/es2019/mediaFeatureFlags/productKeys.js +0 -4
  28. package/dist/es2019/mediaFeatureFlags/types.js +2 -0
  29. package/dist/es2019/mediaTypeUtils/index.js +0 -5
  30. package/dist/es2019/mediaTypeUtils/isMimeTypeSupportedByBrowser.js +3 -2
  31. package/dist/es2019/mediaTypeUtils/isMimeTypeSupportedByServer.js +27 -14
  32. package/dist/es2019/utils/helpers.js +0 -8
  33. package/dist/es2019/version.json +1 -1
  34. package/dist/esm/analytics/index.js +3 -1
  35. package/dist/esm/analytics/withMediaAnalyticsContext.js +3 -7
  36. package/dist/esm/docs/media-use-only.js +0 -5
  37. package/dist/esm/downloadUrl.js +0 -4
  38. package/dist/esm/index.js +5 -3
  39. package/dist/esm/mediaFeatureFlag-local.js +2 -2
  40. package/dist/esm/mediaFeatureFlags/mediaFeatureFlags.js +19 -21
  41. package/dist/esm/mediaFeatureFlags/productKeys.js +0 -4
  42. package/dist/esm/mediaFeatureFlags/types.js +2 -0
  43. package/dist/esm/mediaTypeUtils/index.js +0 -5
  44. package/dist/esm/mediaTypeUtils/isMimeTypeSupportedByBrowser.js +3 -2
  45. package/dist/esm/mediaTypeUtils/isMimeTypeSupportedByServer.js +27 -14
  46. package/dist/esm/utils/helpers.js +3 -15
  47. package/dist/esm/version.json +1 -1
  48. package/dist/types/index.d.ts +1 -1
  49. package/dist/types/mediaFeatureFlags/mediaFeatureFlags.d.ts +11 -0
  50. package/package.json +2 -2
  51. package/report.api.md +4 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/media-common
2
2
 
3
+ ## 3.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [`c2bc38829e1`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c2bc38829e1) - Removed mediaUploadApiV2 feature flag (now as a breaking change)
8
+
9
+ ### Minor Changes
10
+
11
+ - [`8a0a92b2885`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8a0a92b2885) - MEX-2210 improve inconsistent behaviour on timestampOnVideo playback
12
+
13
+ ## 2.19.2
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies
18
+
3
19
  ## 2.19.1
4
20
 
5
21
  ### Patch Changes
@@ -15,7 +15,5 @@ Object.defineProperty(exports, "withMediaAnalyticsContext", {
15
15
  return _withMediaAnalyticsContext.withMediaAnalyticsContext;
16
16
  }
17
17
  });
18
-
19
18
  var _withMediaAnalyticsContext = require("./withMediaAnalyticsContext");
20
-
21
19
  var _constants = require("./constants");
@@ -1,39 +1,27 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.withMediaAnalyticsContext = void 0;
11
-
12
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
-
14
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
11
  var _react = _interopRequireWildcard(require("react"));
17
-
18
12
  var _analyticsNext = require("@atlaskit/analytics-next");
19
-
20
13
  var _MediaAnalyticsContext = require("@atlaskit/analytics-namespaced-context/MediaAnalyticsContext");
21
-
22
14
  var _mediaFeatureFlags = require("../mediaFeatureFlags");
23
-
24
15
  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); }
25
-
26
16
  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; }
27
-
28
17
  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; }
29
-
30
18
  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; }
31
-
32
19
  var getFilteredFeatureFlags = function getFilteredFeatureFlags(keys, featureFlags) {
33
20
  return keys.reduce(function (result, key) {
34
21
  return _objectSpread(_objectSpread({}, result), {}, (0, _defineProperty2.default)({}, key, (0, _mediaFeatureFlags.getMediaFeatureFlag)(key, featureFlags)));
35
22
  }, {});
36
23
  };
24
+
37
25
  /**
38
26
  * HOC for attaching MediaAnalyticsContext to a top-level React Component.
39
27
  *
@@ -46,8 +34,6 @@ var getFilteredFeatureFlags = function getFilteredFeatureFlags(keys, featureFlag
46
34
  *
47
35
  * @see packages/analytics/analytics-next/src/hocs/withAnalyticsContext.tsx
48
36
  */
49
-
50
-
51
37
  var withMediaAnalyticsContext = function withMediaAnalyticsContext(contextPublicAttributes) {
52
38
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
53
39
  return function (WrappedComponent) {
@@ -68,10 +54,10 @@ var withMediaAnalyticsContext = function withMediaAnalyticsContext(contextPublic
68
54
  ref: ref
69
55
  })));
70
56
  });
71
- WithMediaAnalyticsContext.displayName = "WithMediaAnalyticsContext(".concat( // @ts-ignore displayName doesn't exist on type
57
+ WithMediaAnalyticsContext.displayName = "WithMediaAnalyticsContext(".concat(
58
+ // @ts-ignore displayName doesn't exist on type
72
59
  WrappedComponent.displayName || WrappedComponent.name, ")");
73
60
  return WithMediaAnalyticsContext;
74
61
  };
75
62
  };
76
-
77
63
  exports.withMediaAnalyticsContext = withMediaAnalyticsContext;
@@ -15,7 +15,5 @@ Object.defineProperty(exports, "createRxjsNotice", {
15
15
  return _rxjsNotice.createRxjsNotice;
16
16
  }
17
17
  });
18
-
19
18
  var _rxjsNotice = require("./rxjs-notice");
20
-
21
19
  var _mediaUseOnly = require("./media-use-only");
@@ -1,36 +1,28 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.createMediaUseOnlyNotice = createMediaUseOnlyNotice;
9
-
10
8
  var _react = _interopRequireDefault(require("react"));
11
-
12
9
  var _sectionMessage = _interopRequireDefault(require("@atlaskit/section-message"));
13
-
14
10
  function AlternativePackagesMessage(_ref) {
15
11
  var alternatePackages = _ref.alternatePackages;
16
-
17
12
  if (!alternatePackages) {
18
13
  return null;
19
14
  }
20
-
21
15
  if (alternatePackages.length === 1) {
22
16
  return /*#__PURE__*/_react.default.createElement("p", null, "Consider using", ' ', /*#__PURE__*/_react.default.createElement("a", {
23
17
  href: alternatePackages[0].link
24
18
  }, alternatePackages[0].name), ' ', "instead.");
25
19
  }
26
-
27
20
  return /*#__PURE__*/_react.default.createElement("p", null, "Consider using one of these packages instead:", /*#__PURE__*/_react.default.createElement("ul", null, alternatePackages.map(function (p) {
28
21
  return /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement("a", {
29
22
  href: p.link
30
23
  }, p.name));
31
24
  })));
32
25
  }
33
-
34
26
  function createMediaUseOnlyNotice(componentName, alternatePackages) {
35
27
  return /*#__PURE__*/_react.default.createElement(_sectionMessage.default, {
36
28
  title: "Internal Media Use Only",
@@ -1,16 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.createRxjsNotice = createRxjsNotice;
9
-
10
8
  var _react = _interopRequireDefault(require("react"));
11
-
12
9
  var _sectionMessage = _interopRequireDefault(require("@atlaskit/section-message"));
13
-
14
10
  function createRxjsNotice(componentName) {
15
11
  return /*#__PURE__*/_react.default.createElement(_sectionMessage.default, {
16
12
  title: "RxJS compatilbity",
@@ -4,14 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.downloadUrl = void 0;
7
-
8
7
  var downloadUrl = function downloadUrl(url, options) {
9
8
  var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;
10
9
  var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
11
10
  var iframeName = 'media-download-iframe';
12
11
  var link = document.createElement('a');
13
12
  var iframe = document.getElementById(iframeName);
14
-
15
13
  if (!iframe) {
16
14
  iframe = document.createElement('iframe');
17
15
  iframe.style.display = 'none';
@@ -19,17 +17,13 @@ var downloadUrl = function downloadUrl(url, options) {
19
17
  iframe.name = iframeName;
20
18
  document.body.appendChild(iframe);
21
19
  }
22
-
23
20
  link.href = url;
24
-
25
21
  if (options && options.name) {
26
22
  link.download = options.name;
27
23
  }
28
-
29
24
  link.target = isIE11 || isSafari ? '_blank' : iframeName;
30
25
  document.body.appendChild(link);
31
26
  link.click();
32
27
  document.body.removeChild(link);
33
28
  };
34
-
35
29
  exports.downloadUrl = downloadUrl;
package/dist/cjs/index.js CHANGED
@@ -117,6 +117,12 @@ Object.defineProperty(exports, "isUnknownMimeTypeSupportedByServer", {
117
117
  return _mediaTypeUtils.isUnknownMimeTypeSupportedByServer;
118
118
  }
119
119
  });
120
+ Object.defineProperty(exports, "isVideoMimeTypeSupportedByBrowser", {
121
+ enumerable: true,
122
+ get: function get() {
123
+ return _mediaTypeUtils.isVideoMimeTypeSupportedByBrowser;
124
+ }
125
+ });
120
126
  Object.defineProperty(exports, "isVideoMimeTypeSupportedByServer", {
121
127
  enumerable: true,
122
128
  get: function get() {
@@ -153,15 +159,9 @@ Object.defineProperty(exports, "withMediaAnalyticsContext", {
153
159
  return _withMediaAnalyticsContext.withMediaAnalyticsContext;
154
160
  }
155
161
  });
156
-
157
162
  var _downloadUrl = require("./downloadUrl");
158
-
159
163
  var _mediaFeatureFlags = require("./mediaFeatureFlags");
160
-
161
164
  var _withMediaAnalyticsContext = require("./analytics/withMediaAnalyticsContext");
162
-
163
165
  var _constants = require("./analytics/constants");
164
-
165
166
  var _mediaTypeUtils = require("./mediaTypeUtils");
166
-
167
167
  var _helpers = require("./utils/helpers");
@@ -4,15 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getLocalMediaFeatureFlag = void 0;
7
-
8
7
  // window.localStorage is easier to mock in tests if wrapped in this module
9
8
  var getLocalMediaFeatureFlag = function getLocalMediaFeatureFlag(key) {
10
9
  try {
11
10
  return typeof window !== 'undefined' && window.localStorage ? window.localStorage.getItem(key) : null;
12
- } catch (e) {// do nothing, return null by default
11
+ } catch (e) {
12
+ // do nothing, return null by default
13
13
  }
14
-
15
14
  return null;
16
15
  };
17
-
18
16
  exports.getLocalMediaFeatureFlag = getLocalMediaFeatureFlag;
@@ -39,5 +39,4 @@ Object.defineProperty(exports, "useMemoizeFeatureFlags", {
39
39
  return _mediaFeatureFlags.useMemoizeFeatureFlags;
40
40
  }
41
41
  });
42
-
43
42
  var _mediaFeatureFlags = require("./mediaFeatureFlags");
@@ -1,33 +1,24 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.filterFeatureFlagNames = exports.filterFeatureFlagKeysAllProducts = exports.defaultMediaFeatureFlags = exports.areEqualFeatureFlags = void 0;
9
8
  exports.getMediaFeatureFlag = getMediaFeatureFlag;
10
9
  exports.useMemoizeFeatureFlags = exports.mapAndFilterFeatureFlagNames = void 0;
11
-
12
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
-
14
11
  var _react = require("react");
15
-
16
12
  var _mediaFeatureFlagLocal = require("../mediaFeatureFlag-local");
17
-
18
13
  var _types = require("./types");
19
-
20
14
  var _productKeys = require("./productKeys");
21
-
22
15
  var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
23
16
  if (!ffA && !ffB) {
24
17
  return true;
25
18
  }
26
-
27
19
  if (!ffA || !ffB) {
28
20
  return false;
29
21
  }
30
-
31
22
  var results = {
32
23
  newCardExperience: ffA.newCardExperience === ffB.newCardExperience,
33
24
  captions: ffA.captions === ffB.captions,
@@ -35,8 +26,6 @@ var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
35
26
  folderUploads: ffA.folderUploads === ffB.folderUploads,
36
27
  observedWidth: ffA.observedWidth === ffB.observedWidth,
37
28
  timestampOnVideo: ffA.timestampOnVideo === ffB.timestampOnVideo,
38
- // @ts-ignore
39
- mediaUploadApiV2: ffA.mediaUploadApiV2 === ffB.mediaUploadApiV2,
40
29
  memoryCacheLogging: ffA.memoryCacheLogging === ffB.memoryCacheLogging,
41
30
  fetchFileStateAfterUpload: ffA.fetchFileStateAfterUpload === ffB.fetchFileStateAfterUpload
42
31
  };
@@ -44,47 +33,39 @@ var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
44
33
  return result;
45
34
  });
46
35
  };
47
-
48
36
  exports.areEqualFeatureFlags = areEqualFeatureFlags;
49
-
50
37
  var filterFeatureFlagNames = function filterFeatureFlagNames(flags) {
51
38
  var pairs = Object.entries(flags);
52
39
  return pairs.filter(function (_ref) {
53
40
  var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
54
- _key = _ref2[0],
55
- value = _ref2[1];
56
-
41
+ _key = _ref2[0],
42
+ value = _ref2[1];
57
43
  return !!value;
58
44
  }).map(function (_ref3) {
59
45
  var _ref4 = (0, _slicedToArray2.default)(_ref3, 1),
60
- key = _ref4[0];
61
-
46
+ key = _ref4[0];
62
47
  return key;
63
48
  });
64
49
  };
50
+
65
51
  /**
66
52
  * Takes a record of {Media Feature Flag Names → boolean} and a supported product name.
67
53
  * Returns the corresponding product’s Launch Darkly Keys for each of the flags set as true in the input record.
68
54
  * */
69
-
70
-
71
55
  exports.filterFeatureFlagNames = filterFeatureFlagNames;
72
-
73
56
  var mapAndFilterFeatureFlagNames = function mapAndFilterFeatureFlagNames(flags, product) {
74
57
  var mediaFeatureFlags = filterFeatureFlagNames(flags);
75
58
  return mediaFeatureFlags.map(function (key) {
76
59
  return (0, _productKeys.getProductKeys)()[product][key];
77
60
  });
78
- }; // TODO(MEX-1547): This is temporary solution to just return the launch darkly feature flags for all products.
61
+ };
79
62
 
63
+ // TODO(MEX-1547): This is temporary solution to just return the launch darkly feature flags for all products.
80
64
  /**
81
65
  * Takes a record of {Media Feature Flag Names → boolean}.
82
66
  * Returns the Launch Darkly Keys from all products for each of the flags set as true in the input record.
83
67
  * */
84
-
85
-
86
68
  exports.mapAndFilterFeatureFlagNames = mapAndFilterFeatureFlagNames;
87
-
88
69
  var filterFeatureFlagKeysAllProducts = function filterFeatureFlagKeysAllProducts(flags) {
89
70
  var filteredFlags = filterFeatureFlagNames(flags);
90
71
  var ldFeatureFlags = [];
@@ -96,9 +77,19 @@ var filterFeatureFlagKeysAllProducts = function filterFeatureFlagKeysAllProducts
96
77
  return ldFeatureFlags.filter(function (flag) {
97
78
  return flag !== '';
98
79
  });
99
- }; // default values defined here, not necessary for components to know directly as they should use the function below
100
-
80
+ };
101
81
 
82
+ /**
83
+ * defaultMediaFeatureFlags set default values used by the getter function getMediaFeatureFlag
84
+ *
85
+ * *************************************
86
+ * ************* IMPORTANT *************
87
+ * *************************************
88
+ * Only in exceptional cases a FF should be 'true' by default.
89
+ * Making a flag default to 'true' can lead to confusing and unexpected scenarios.
90
+ * If you must set a flag default = true, whenever you remove that flag
91
+ * that change should be released as a MAJOR, because it's a breaking change.
92
+ */
102
93
  exports.filterFeatureFlagKeysAllProducts = filterFeatureFlagKeysAllProducts;
103
94
  var defaultMediaFeatureFlags = {
104
95
  newCardExperience: false,
@@ -109,11 +100,10 @@ var defaultMediaFeatureFlags = {
109
100
  folderUploads: false,
110
101
  observedWidth: false,
111
102
  timestampOnVideo: false,
112
- // @ts-ignore
113
- mediaUploadApiV2: true,
114
103
  memoryCacheLogging: false,
115
104
  fetchFileStateAfterUpload: false
116
105
  };
106
+
117
107
  /**
118
108
  * Public accessor from components to fallback to defaults if flags not passed,
119
109
  * otherwise whatever product has set will be returned.
@@ -124,33 +114,24 @@ var defaultMediaFeatureFlags = {
124
114
  *
125
115
  * (you will see a warning in console if override used)
126
116
  * */
127
-
128
117
  exports.defaultMediaFeatureFlags = defaultMediaFeatureFlags;
129
-
130
118
  function getMediaFeatureFlag(flagName, featureFlags) {
131
119
  var devOverride = (0, _mediaFeatureFlagLocal.getLocalMediaFeatureFlag)(flagName);
132
-
133
120
  if (devOverride !== null) {
134
121
  try {
135
122
  return JSON.parse(devOverride);
136
123
  } catch (e) {}
137
124
  }
138
-
139
125
  if (featureFlags) {
140
126
  return flagName in featureFlags ? featureFlags[flagName] : defaultMediaFeatureFlags[flagName];
141
127
  }
142
-
143
128
  return defaultMediaFeatureFlags[flagName];
144
129
  }
145
-
146
130
  var useMemoizeFeatureFlags = function useMemoizeFeatureFlags(featureFlags) {
147
131
  var ref = (0, _react.useRef)();
148
-
149
132
  if (!areEqualFeatureFlags(featureFlags, ref.current)) {
150
133
  ref.current = featureFlags;
151
134
  }
152
-
153
135
  return ref.current;
154
136
  };
155
-
156
137
  exports.useMemoizeFeatureFlags = useMemoizeFeatureFlags;
@@ -13,8 +13,6 @@ var productKeys = {
13
13
  //TODO fill the value after https://product-fabric.atlassian.net/browse/MEX-1593
14
14
  observedWidth: '',
15
15
  timestampOnVideo: 'confluence.frontend.media.timestamp.on.video',
16
- // @ts-ignore
17
- mediaUploadApiV2: 'confluence.enable.media.upload.api.v2',
18
16
  memoryCacheLogging: 'confluence-frontend-media-card-memory-cache-logging',
19
17
  fetchFileStateAfterUpload: 'confluence-frontend-media-client-fetch-file-state-after-upload'
20
18
  },
@@ -27,15 +25,11 @@ var productKeys = {
27
25
  //TODO fill the value after https://product-fabric.atlassian.net/browse/MEX-1593
28
26
  observedWidth: '',
29
27
  timestampOnVideo: 'issue.details.media-cards-timestamp-on-video',
30
- // @ts-ignore
31
- mediaUploadApiV2: 'issue.details.enable-media-upload-api-version-2',
32
28
  memoryCacheLogging: 'jira-frontend-media-card-memory-cache-logging',
33
29
  fetchFileStateAfterUpload: 'jira-frontend-media-client-fetch-file-state-after-upload'
34
30
  }
35
31
  };
36
-
37
32
  var getProductKeys = function getProductKeys() {
38
33
  return productKeys;
39
34
  };
40
-
41
35
  exports.getProductKeys = getProductKeys;
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.supportedProducts = void 0;
7
7
  // Media feature flags - type and defaults defined here in one source of truth
8
+
8
9
  // With this type we ensure the object will contain all the flags
10
+
9
11
  var supportedProducts = ['confluence', 'jira'];
10
12
  exports.supportedProducts = supportedProducts;
@@ -70,35 +70,25 @@ Object.defineProperty(exports, "isVideoMimeTypeSupportedByServer", {
70
70
  return _isMimeTypeSupportedByServer.isVideoMimeTypeSupportedByServer;
71
71
  }
72
72
  });
73
-
74
73
  var _isArchive = require("./isArchive");
75
-
76
74
  var _isMimeTypeSupportedByBrowser = require("./isMimeTypeSupportedByBrowser");
77
-
78
75
  var _isMimeTypeSupportedByServer = require("./isMimeTypeSupportedByServer");
79
-
80
76
  var getMediaTypeFromMimeType = function getMediaTypeFromMimeType(mimeType) {
81
77
  if ((0, _isArchive.isArchive)(mimeType)) {
82
78
  return 'archive';
83
79
  }
84
-
85
80
  if ((0, _isMimeTypeSupportedByBrowser.isImageMimeTypeSupportedByBrowser)(mimeType) || (0, _isMimeTypeSupportedByServer.isImageMimeTypeSupportedByServer)(mimeType)) {
86
81
  return 'image';
87
82
  }
88
-
89
83
  if ((0, _isMimeTypeSupportedByBrowser.isDocumentMimeTypeSupportedByBrowser)(mimeType) || (0, _isMimeTypeSupportedByServer.isDocumentMimeTypeSupportedByServer)(mimeType)) {
90
84
  return 'doc';
91
85
  }
92
-
93
86
  if ((0, _isMimeTypeSupportedByBrowser.isAudioMimeTypeSupportedByBrowser)(mimeType) || (0, _isMimeTypeSupportedByServer.isAudioMimeTypeSupportedByServer)(mimeType)) {
94
87
  return 'audio';
95
88
  }
96
-
97
89
  if ((0, _isMimeTypeSupportedByBrowser.isVideoMimeTypeSupportedByBrowser)(mimeType) || (0, _isMimeTypeSupportedByServer.isVideoMimeTypeSupportedByServer)(mimeType)) {
98
90
  return 'video';
99
91
  }
100
-
101
92
  return 'unknown';
102
93
  };
103
-
104
94
  exports.getMediaTypeFromMimeType = getMediaTypeFromMimeType;
@@ -4,10 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isArchive = void 0;
7
-
8
7
  // Based on https://en.wikipedia.org/wiki/List_of_archive_formats
9
8
  var isArchive = function isArchive(mimeType) {
10
9
  return ['application/x-archive', 'application/x-cpio', 'application/x-shar', 'application/x-iso9660-image', 'application/x-sbx', 'application/x-tar', 'application/x-bzip2', 'application/gzip', 'application/x-gzip', 'application/x-lzip', 'application/x-lzma', 'application/x-lzop', 'application/x-snappy-framed', 'application/x-xz', 'application/x-compress', 'application/zstd', 'application/x-7z-compressed', 'application/x-ace-compressed', 'application/x-astrotite-afa', 'application/x-alz-compressed', 'application/vnd.android.package-archive', 'application/x-freearc', 'application/x-arj', 'application/x-b1', 'application/vnd.ms-cab-compressed', 'application/x-cfs-compressed', 'application/x-dar', 'application/x-dgc-compressed', 'application/x-apple-diskimage', 'application/x-gca-compressed', 'application/java-archive', 'application/x-lzh', 'application/x-lzx', 'application/x-rar-compressed', 'application/x-stuffit', 'application/x-stuffitx', 'application/x-gtar', 'application/x-ms-wim', 'application/x-xar', 'application/zip', 'application/x-zoo', 'application/x-par2'].indexOf(mimeType.toLowerCase()) > -1;
11
10
  };
12
-
13
11
  exports.isArchive = isArchive;
@@ -4,24 +4,21 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isVideoMimeTypeSupportedByBrowser = exports.isMimeTypeSupportedByBrowser = exports.isImageMimeTypeSupportedByBrowser = exports.isDocumentMimeTypeSupportedByBrowser = exports.isAudioMimeTypeSupportedByBrowser = void 0;
7
-
8
7
  // Based on https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types
9
8
  var isImageMimeTypeSupportedByBrowser = function isImageMimeTypeSupportedByBrowser(mimeType) {
10
- return ['image/apng', 'image/bmp', 'image/gif', 'image/x-icon', 'image/jpeg', 'image/png', 'image/webp' //'image/svg+xml', // Removed because of https://product-fabric.atlassian.net/browse/BMPT-625
9
+ return ['image/apng', 'image/bmp', 'image/gif', 'image/x-icon', 'image/jpeg', 'image/png', 'image/webp'
10
+ //'image/svg+xml', // Removed because of https://product-fabric.atlassian.net/browse/BMPT-625
11
11
  ].indexOf(mimeType.toLowerCase()) > -1;
12
12
  };
13
-
14
13
  exports.isImageMimeTypeSupportedByBrowser = isImageMimeTypeSupportedByBrowser;
15
-
16
14
  var isDocumentMimeTypeSupportedByBrowser = function isDocumentMimeTypeSupportedByBrowser(mimeType) {
17
15
  return mimeType.toLowerCase() === 'application/pdf';
18
16
  };
19
-
20
17
  exports.isDocumentMimeTypeSupportedByBrowser = isDocumentMimeTypeSupportedByBrowser;
21
-
22
18
  var isAudioMimeTypeSupportedByBrowser = function isAudioMimeTypeSupportedByBrowser(mimeType) {
23
19
  return ['audio/aac', 'audio/flac', 'audio/mp4', 'audio/mpeg', 'audio/ogg', 'audio/x-ogg', 'audio/wav', 'audio/x-wav'].indexOf(mimeType.toLowerCase()) > -1;
24
20
  };
21
+
25
22
  /**
26
23
  * For backward compatilbity, we assume MP4/MOV is natively supported.
27
24
  * TODO: Improve detection of supported video formats by the browser.
@@ -31,18 +28,12 @@ var isAudioMimeTypeSupportedByBrowser = function isAudioMimeTypeSupportedByBrows
31
28
  * - https://product-fabric.atlassian.net/browse/EDM-634
32
29
  * - https://product-fabric.atlassian.net/browse/EDM-426
33
30
  */
34
-
35
-
36
31
  exports.isAudioMimeTypeSupportedByBrowser = isAudioMimeTypeSupportedByBrowser;
37
-
38
32
  var isVideoMimeTypeSupportedByBrowser = function isVideoMimeTypeSupportedByBrowser(mimeType) {
39
33
  return ['video/mp4', 'video/quicktime'].indexOf(mimeType.toLowerCase()) > -1;
40
34
  };
41
-
42
35
  exports.isVideoMimeTypeSupportedByBrowser = isVideoMimeTypeSupportedByBrowser;
43
-
44
36
  var isMimeTypeSupportedByBrowser = function isMimeTypeSupportedByBrowser(mimeType) {
45
37
  return isDocumentMimeTypeSupportedByBrowser(mimeType) || isImageMimeTypeSupportedByBrowser(mimeType) || isAudioMimeTypeSupportedByBrowser(mimeType) || isVideoMimeTypeSupportedByBrowser(mimeType);
46
38
  };
47
-
48
39
  exports.isMimeTypeSupportedByBrowser = isMimeTypeSupportedByBrowser;
@@ -4,54 +4,55 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isVideoMimeTypeSupportedByServer = exports.isUnknownMimeTypeSupportedByServer = exports.isMimeTypeSupportedByServer = exports.isImageMimeTypeSupportedByServer = exports.isDocumentMimeTypeSupportedByServer = exports.isAudioMimeTypeSupportedByServer = void 0;
7
-
8
7
  // Based on https://developer.atlassian.com/platform/media/learning/file-previews/
9
8
  var isImageMimeTypeSupportedByServer = function isImageMimeTypeSupportedByServer(mimeType) {
10
9
  return ['image/bmp', 'image/x-windows-bmp', 'application/dicom', 'image/gif', 'image/jpeg', 'image/jpg', 'image/jp_', 'application/jpg', 'application/x-jpg', 'image/png', 'application/png', 'application/x-png', 'application/vnd.adobe.photoshop', 'image/vnd.adobe.photoshop', 'image/photoshop', 'image/x-photoshop', 'image/psd', 'application/photoshop', 'application/psd', 'zz-application/zz-winassoc-psd', 'image/tiff', 'image/x-tif', 'image/x-tiff', 'application/tif', 'application/x-tif', 'application/tiff', 'application/x-tiff', 'image/svg+xml', 'image/heif', 'image/heif-sequence', 'image/heic', 'image/heic-sequence'].indexOf(mimeType.toLowerCase()) > -1;
11
10
  };
12
-
13
11
  exports.isImageMimeTypeSupportedByServer = isImageMimeTypeSupportedByServer;
14
-
15
12
  var isDocumentMimeTypeSupportedByServer = function isDocumentMimeTypeSupportedByServer(mimeType) {
16
- return [// Adobe PDF
17
- 'application/pdf', 'application/x-pdf', 'application/acrobat', 'applications/vnd.pdf', 'text/pdf', 'text/x-pdf', // Adobe Illustrator
18
- 'application/vnd.adobe.illustrator', // Microsoft Office
19
- 'application/vnd.ms-office', // Microsoft Word
20
- 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', 'application/vnd.ms-word.document.macroenabled.12', 'application/vnd.ms-word.template.macroenabled.12', // Microsoft Excel
21
- 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', 'application/vnd.ms-excel.sheet.macroenabled.12', 'application/vnd.ms-excel.template.macroenabled.12', 'application/vnd.ms-excel.addin.macroenabled.12', 'application/vnd.ms-excel.sheet.macroenabled', 'application/vnd.ms-excel.template.macroenabled', 'application/vnd.ms-excel.addin.macroenabled', // Microsoft Powerpoint
22
- 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.openxmlformats-officedocument.presentationml.template', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 'application/vnd.ms-powerpoint.presentation.macroenabled.12', 'application/vnd.ms-powerpoint.template.macroenabled.12', 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', // OpenOffice
23
- 'application/vnd.sun.xml.writer', 'application/vnd.sun.xml.writer.template', // OpenDocument
24
- 'application/vnd.sun.xml.draw', 'application/vnd.sun.xml.draw.template', 'application/vnd.oasis.opendocument.graphics', 'application/vnd.oasis.opendocument.presentation', 'application/x-vnd.oasis.opendocument.presentation', 'application/vnd.sun.xml.calc', 'application/vnd.sun.xml.calc.template', 'application/vnd.oasis.opendocument.spreadsheet', 'application/x-vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.spreadsheet-template', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.text-template', 'application/vnd.oasis.opendocument.text-master', 'application/x-vnd.oasis.opendocument.text', 'application/x-vnd.oasis.opendocument.text-template', 'application/x-vnd.oasis.opendocument.text-master', // WordPerfect
25
- 'application/vnd.wordperfect', // Text files
26
- 'text/csv', 'text/x-diff', 'text/x-perl', 'text/x-python', 'text/x-ruby', 'text/rtf', 'text/richtext', 'text/plain', 'application/txt', // Rich text
27
- 'application/rtf', 'application/x-rtf', // PostScript
13
+ return [
14
+ // Adobe PDF
15
+ 'application/pdf', 'application/x-pdf', 'application/acrobat', 'applications/vnd.pdf', 'text/pdf', 'text/x-pdf',
16
+ // Adobe Illustrator
17
+ 'application/vnd.adobe.illustrator',
18
+ // Microsoft Office
19
+ 'application/vnd.ms-office',
20
+ // Microsoft Word
21
+ 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', 'application/vnd.ms-word.document.macroenabled.12', 'application/vnd.ms-word.template.macroenabled.12',
22
+ // Microsoft Excel
23
+ 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', 'application/vnd.ms-excel.sheet.macroenabled.12', 'application/vnd.ms-excel.template.macroenabled.12', 'application/vnd.ms-excel.addin.macroenabled.12', 'application/vnd.ms-excel.sheet.macroenabled', 'application/vnd.ms-excel.template.macroenabled', 'application/vnd.ms-excel.addin.macroenabled',
24
+ // Microsoft Powerpoint
25
+ 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.openxmlformats-officedocument.presentationml.template', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 'application/vnd.ms-powerpoint.presentation.macroenabled.12', 'application/vnd.ms-powerpoint.template.macroenabled.12', 'application/vnd.ms-powerpoint.slideshow.macroenabled.12',
26
+ // OpenOffice
27
+ 'application/vnd.sun.xml.writer', 'application/vnd.sun.xml.writer.template',
28
+ // OpenDocument
29
+ 'application/vnd.sun.xml.draw', 'application/vnd.sun.xml.draw.template', 'application/vnd.oasis.opendocument.graphics', 'application/vnd.oasis.opendocument.presentation', 'application/x-vnd.oasis.opendocument.presentation', 'application/vnd.sun.xml.calc', 'application/vnd.sun.xml.calc.template', 'application/vnd.oasis.opendocument.spreadsheet', 'application/x-vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.spreadsheet-template', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.text-template', 'application/vnd.oasis.opendocument.text-master', 'application/x-vnd.oasis.opendocument.text', 'application/x-vnd.oasis.opendocument.text-template', 'application/x-vnd.oasis.opendocument.text-master',
30
+ // WordPerfect
31
+ 'application/vnd.wordperfect',
32
+ // Text files
33
+ 'text/csv', 'text/x-diff', 'text/x-perl', 'text/x-python', 'text/x-ruby', 'text/rtf', 'text/richtext', 'text/plain', 'application/txt',
34
+ // Rich text
35
+ 'application/rtf', 'application/x-rtf',
36
+ // PostScript
28
37
  'application/postscript'].indexOf(mimeType.toLowerCase()) > -1;
29
38
  };
30
-
31
39
  exports.isDocumentMimeTypeSupportedByServer = isDocumentMimeTypeSupportedByServer;
32
-
33
40
  var isAudioMimeTypeSupportedByServer = function isAudioMimeTypeSupportedByServer(mimeType) {
34
41
  return ['audio/aac', 'audio/x-hx-aac-adts', 'audio/vnd.dolby.dd-raw', 'audio/aiff', 'audio/x-aiff', 'audio/x-monkeys-audio', 'audio/x-ape', 'audio/basic', 'audio/flac', 'audio/mp4', 'audio/midi', 'audio/x-matroska', 'audio/x-mod', 'audio/mpeg', 'audio/ogg', 'audio/x-ogg', 'audio/x-pn-realaudio', 'audio/wav', 'audio/x-wav', 'audio/x-ms-wma'].indexOf(mimeType.toLowerCase()) > -1;
35
42
  };
36
-
37
43
  exports.isAudioMimeTypeSupportedByServer = isAudioMimeTypeSupportedByServer;
38
-
39
44
  var isVideoMimeTypeSupportedByServer = function isVideoMimeTypeSupportedByServer(mimeType) {
40
45
  return ['video/3gpp', 'video/3gpp2', 'video/x-ms-asf', 'video/avi', 'video/msvideo', 'video/x-msvideo', 'video/x-dv', 'video/x-flv', 'video/m2ts', 'video/x-m4v', 'video/x-matroska', 'video/quicktime', 'video/mp4', 'video/mpeg', 'video/ogg', 'video/x-ogg', 'video/webm', 'video/x-ms-wmv'].indexOf(mimeType.toLowerCase()) > -1;
41
- }; // BMPT-620: The backend momentarily returns this mimeType for cloud files imported via dt-api-mediapicker
42
- // Once these cloud files are processed they are receiving a more relevant mimeType
43
-
46
+ };
44
47
 
48
+ // BMPT-620: The backend momentarily returns this mimeType for cloud files imported via dt-api-mediapicker
49
+ // Once these cloud files are processed they are receiving a more relevant mimeType
45
50
  exports.isVideoMimeTypeSupportedByServer = isVideoMimeTypeSupportedByServer;
46
-
47
51
  var isUnknownMimeTypeSupportedByServer = function isUnknownMimeTypeSupportedByServer(mimeType) {
48
52
  return ['binary/octet-stream'].indexOf(mimeType.toLowerCase()) > -1;
49
53
  };
50
-
51
54
  exports.isUnknownMimeTypeSupportedByServer = isUnknownMimeTypeSupportedByServer;
52
-
53
55
  var isMimeTypeSupportedByServer = function isMimeTypeSupportedByServer(mimeType) {
54
56
  return isImageMimeTypeSupportedByServer(mimeType) || isDocumentMimeTypeSupportedByServer(mimeType) || isAudioMimeTypeSupportedByServer(mimeType) || isVideoMimeTypeSupportedByServer(mimeType) || isUnknownMimeTypeSupportedByServer(mimeType);
55
57
  };
56
-
57
58
  exports.isMimeTypeSupportedByServer = isMimeTypeSupportedByServer;