@atlaskit/media-common 2.9.1 → 2.10.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 CHANGED
@@ -1,5 +1,19 @@
1
1
  # @atlaskit/media-common
2
2
 
3
+ ## 2.10.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`f461edcfd05`](https://bitbucket.org/atlassian/atlassian-frontend/commits/f461edcfd05) - Added a comparer helper for Media Feature Flags objects
8
+
9
+ ### Patch Changes
10
+
11
+ - [`fc70978492a`](https://bitbucket.org/atlassian/atlassian-frontend/commits/fc70978492a) - Using type for SSR prop to reduce dependency on media-common
12
+ - [`2b24fcc59f2`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2b24fcc59f2) - Removed Code Viewer and Zip Previews Feature Flags
13
+ - [`f461edcfd05`](https://bitbucket.org/atlassian/atlassian-frontend/commits/f461edcfd05) - Update CardLoader to use react-loadable
14
+ Add SSR feature prop to be passed in renderer and media card
15
+ - [`01a41e75803`](https://bitbucket.org/atlassian/atlassian-frontend/commits/01a41e75803) - Removes `allowMediaInline` media prop and replaces with Inline Files feature flag for editor and mobile bridge
16
+
3
17
  ## 2.9.1
4
18
 
5
19
  ### Patch Changes
package/dist/cjs/index.js CHANGED
@@ -21,6 +21,18 @@ Object.defineProperty(exports, "defaultMediaFeatureFlags", {
21
21
  return _mediaFeatureFlags.defaultMediaFeatureFlags;
22
22
  }
23
23
  });
24
+ Object.defineProperty(exports, "areEqualFeatureFlags", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _mediaFeatureFlags.areEqualFeatureFlags;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "useMemoizeFeatureFlags", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _mediaFeatureFlags.useMemoizeFeatureFlags;
34
+ }
35
+ });
24
36
  Object.defineProperty(exports, "withMediaAnalyticsContext", {
25
37
  enumerable: true,
26
38
  get: function get() {
@@ -4,17 +4,20 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getMediaFeatureFlag = getMediaFeatureFlag;
7
- exports.defaultMediaFeatureFlags = void 0;
7
+ exports.useMemoizeFeatureFlags = exports.areEqualFeatureFlags = exports.defaultMediaFeatureFlags = void 0;
8
+
9
+ var _react = require("react");
8
10
 
9
11
  var _mediaFeatureFlagLocal = require("./mediaFeatureFlag-local");
10
12
 
11
13
  // default values defined here, not necessary for components to know directly as they should use the function below
12
14
  var defaultMediaFeatureFlags = {
13
15
  newCardExperience: false,
14
- zipPreviews: false,
15
16
  captions: false,
16
- folderUploads: false,
17
- codeViewer: false
17
+ mediaInline: false,
18
+ // We can't yet switch this feature on
19
+ // TODO https://product-fabric.atlassian.net/browse/MEX-104
20
+ folderUploads: false
18
21
  };
19
22
  /**
20
23
  * Public accessor from components to fallback to defaults if flags not passed,
@@ -56,4 +59,39 @@ Object.keys(defaultMediaFeatureFlags).forEach(function (flagName) {
56
59
  // eslint-disable-next-line no-console
57
60
  console.info("%c* LOCAL * MediaFeatureFlag.".concat(flagName, " = ").concat(localOverride), 'font-weight:bold;color:cyan');
58
61
  }
59
- });
62
+ });
63
+
64
+ var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
65
+ if (!ffA && !ffB) {
66
+ return true;
67
+ }
68
+
69
+ if (!ffA || !ffB) {
70
+ return false;
71
+ } // With this type we ensure this object will compare all the flags
72
+
73
+
74
+ var results = {
75
+ newCardExperience: ffA.newCardExperience === ffB.newCardExperience,
76
+ captions: ffA.captions === ffB.captions,
77
+ mediaInline: ffA.mediaInline === ffB.mediaInline,
78
+ folderUploads: ffA.folderUploads === ffB.folderUploads
79
+ };
80
+ return Object.values(results).every(function (result) {
81
+ return result;
82
+ });
83
+ };
84
+
85
+ exports.areEqualFeatureFlags = areEqualFeatureFlags;
86
+
87
+ var useMemoizeFeatureFlags = function useMemoizeFeatureFlags(featureFlags) {
88
+ var ref = (0, _react.useRef)();
89
+
90
+ if (!areEqualFeatureFlags(featureFlags, ref.current)) {
91
+ ref.current = featureFlags;
92
+ }
93
+
94
+ return ref.current;
95
+ };
96
+
97
+ exports.useMemoizeFeatureFlags = useMemoizeFeatureFlags;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-common",
3
- "version": "2.9.1",
3
+ "version": "2.10.0",
4
4
  "sideEffects": false
5
5
  }
@@ -2,7 +2,7 @@ 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 } from './mediaFeatureFlags';
5
+ export { getMediaFeatureFlag, defaultMediaFeatureFlags, areEqualFeatureFlags, useMemoizeFeatureFlags } from './mediaFeatureFlags';
6
6
  // Analytics context
7
7
  export { withMediaAnalyticsContext } from './analytics/withMediaAnalyticsContext'; // Analytics constants
8
8
 
@@ -1,12 +1,14 @@
1
+ import { useRef } from 'react';
1
2
  import { getLocalMediaFeatureFlag } from './mediaFeatureFlag-local'; // Media feature flags - type and defaults defined here in one source of truth
2
3
 
3
4
  // default values defined here, not necessary for components to know directly as they should use the function below
4
5
  export const defaultMediaFeatureFlags = {
5
6
  newCardExperience: false,
6
- zipPreviews: false,
7
7
  captions: false,
8
- folderUploads: false,
9
- codeViewer: false
8
+ mediaInline: false,
9
+ // We can't yet switch this feature on
10
+ // TODO https://product-fabric.atlassian.net/browse/MEX-104
11
+ folderUploads: false
10
12
  };
11
13
  /**
12
14
  * Public accessor from components to fallback to defaults if flags not passed,
@@ -45,4 +47,31 @@ Object.keys(defaultMediaFeatureFlags).forEach(flagName => {
45
47
  // eslint-disable-next-line no-console
46
48
  console.info(`%c* LOCAL * MediaFeatureFlag.${flagName} = ${localOverride}`, 'font-weight:bold;color:cyan');
47
49
  }
48
- });
50
+ });
51
+ export const areEqualFeatureFlags = (ffA, ffB) => {
52
+ if (!ffA && !ffB) {
53
+ return true;
54
+ }
55
+
56
+ if (!ffA || !ffB) {
57
+ return false;
58
+ } // With this type we ensure this object will compare all the flags
59
+
60
+
61
+ const results = {
62
+ newCardExperience: ffA.newCardExperience === ffB.newCardExperience,
63
+ captions: ffA.captions === ffB.captions,
64
+ mediaInline: ffA.mediaInline === ffB.mediaInline,
65
+ folderUploads: ffA.folderUploads === ffB.folderUploads
66
+ };
67
+ return Object.values(results).every(result => result);
68
+ };
69
+ export const useMemoizeFeatureFlags = featureFlags => {
70
+ const ref = useRef();
71
+
72
+ if (!areEqualFeatureFlags(featureFlags, ref.current)) {
73
+ ref.current = featureFlags;
74
+ }
75
+
76
+ return ref.current;
77
+ };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-common",
3
- "version": "2.9.1",
3
+ "version": "2.10.0",
4
4
  "sideEffects": false
5
5
  }
package/dist/esm/index.js CHANGED
@@ -2,7 +2,7 @@ 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 } from './mediaFeatureFlags';
5
+ export { getMediaFeatureFlag, defaultMediaFeatureFlags, areEqualFeatureFlags, useMemoizeFeatureFlags } from './mediaFeatureFlags';
6
6
  // Analytics context
7
7
  export { withMediaAnalyticsContext } from './analytics/withMediaAnalyticsContext'; // Analytics constants
8
8
 
@@ -1,12 +1,14 @@
1
+ import { useRef } from 'react';
1
2
  import { getLocalMediaFeatureFlag } from './mediaFeatureFlag-local'; // Media feature flags - type and defaults defined here in one source of truth
2
3
 
3
4
  // default values defined here, not necessary for components to know directly as they should use the function below
4
5
  export var defaultMediaFeatureFlags = {
5
6
  newCardExperience: false,
6
- zipPreviews: false,
7
7
  captions: false,
8
- folderUploads: false,
9
- codeViewer: false
8
+ mediaInline: false,
9
+ // We can't yet switch this feature on
10
+ // TODO https://product-fabric.atlassian.net/browse/MEX-104
11
+ folderUploads: false
10
12
  };
11
13
  /**
12
14
  * Public accessor from components to fallback to defaults if flags not passed,
@@ -45,4 +47,33 @@ Object.keys(defaultMediaFeatureFlags).forEach(function (flagName) {
45
47
  // eslint-disable-next-line no-console
46
48
  console.info("%c* LOCAL * MediaFeatureFlag.".concat(flagName, " = ").concat(localOverride), 'font-weight:bold;color:cyan');
47
49
  }
48
- });
50
+ });
51
+ export var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
52
+ if (!ffA && !ffB) {
53
+ return true;
54
+ }
55
+
56
+ if (!ffA || !ffB) {
57
+ return false;
58
+ } // With this type we ensure this object will compare all the flags
59
+
60
+
61
+ var results = {
62
+ newCardExperience: ffA.newCardExperience === ffB.newCardExperience,
63
+ captions: ffA.captions === ffB.captions,
64
+ mediaInline: ffA.mediaInline === ffB.mediaInline,
65
+ folderUploads: ffA.folderUploads === ffB.folderUploads
66
+ };
67
+ return Object.values(results).every(function (result) {
68
+ return result;
69
+ });
70
+ };
71
+ export var useMemoizeFeatureFlags = function useMemoizeFeatureFlags(featureFlags) {
72
+ var ref = useRef();
73
+
74
+ if (!areEqualFeatureFlags(featureFlags, ref.current)) {
75
+ ref.current = featureFlags;
76
+ }
77
+
78
+ return ref.current;
79
+ };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-common",
3
- "version": "2.9.1",
3
+ "version": "2.10.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,7 +1,7 @@
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, } from './mediaFeatureFlags';
4
+ export { getMediaFeatureFlag, defaultMediaFeatureFlags, areEqualFeatureFlags, useMemoizeFeatureFlags, } from './mediaFeatureFlags';
5
5
  export type { MediaFeatureFlags, WithMediaFeatureFlags, } from './mediaFeatureFlags';
6
6
  export interface NumericalCardDimensions {
7
7
  width: number;
@@ -11,3 +11,4 @@ export type { PackageAttributes, WithFileAttributes, WithPerformanceAttributes,
11
11
  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
+ export declare type SSR = 'client' | 'server';
@@ -1,9 +1,8 @@
1
1
  export interface MediaFeatureFlags {
2
2
  newCardExperience?: boolean;
3
- zipPreviews?: boolean;
4
3
  captions?: boolean;
4
+ mediaInline?: boolean;
5
5
  folderUploads?: boolean;
6
- codeViewer?: boolean;
7
6
  }
8
7
  export interface WithMediaFeatureFlags {
9
8
  featureFlags?: MediaFeatureFlags;
@@ -20,3 +19,5 @@ export declare const defaultMediaFeatureFlags: Required<MediaFeatureFlags>;
20
19
  * (you will see a warning in console if override used)
21
20
  * */
22
21
  export declare function getMediaFeatureFlag<T = boolean>(flagName: keyof MediaFeatureFlags, featureFlags?: MediaFeatureFlags): T;
22
+ export declare const areEqualFeatureFlags: (ffA?: MediaFeatureFlags | undefined, ffB?: MediaFeatureFlags | undefined) => boolean;
23
+ export declare const useMemoizeFeatureFlags: (featureFlags?: MediaFeatureFlags | undefined) => MediaFeatureFlags | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/media-common",
3
- "version": "2.9.1",
3
+ "version": "2.10.0",
4
4
  "description": "Includes common utilities used by other media packages",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -44,7 +44,7 @@
44
44
  },
45
45
  "devDependencies": {
46
46
  "@atlaskit/docs": "*",
47
- "@atlaskit/media-test-helpers": "^28.6.0",
47
+ "@atlaskit/media-test-helpers": "^28.9.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
50
  "lodash": "^4.17.15",