@atlaskit/media-common 2.10.1 → 2.11.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,24 @@
1
1
  # @atlaskit/media-common
2
2
 
3
+ ## 2.11.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`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)
8
+
9
+ ## 2.10.3
10
+
11
+ ### Patch Changes
12
+
13
+ - [`5293a48368e`](https://bitbucket.org/atlassian/atlassian-frontend/commits/5293a48368e) - fix image size in layout with ref and width observer
14
+
15
+ ## 2.10.2
16
+
17
+ ### Patch Changes
18
+
19
+ - [`19d72473dfb`](https://bitbucket.org/atlassian/atlassian-frontend/commits/19d72473dfb) - Switched as false default value for FF "Timestamp on video"
20
+ - [`19d72473dfb`](https://bitbucket.org/atlassian/atlassian-frontend/commits/19d72473dfb) - Adding a feature flag for TimestampOnVideo
21
+
3
22
  ## 2.10.1
4
23
 
5
24
  ### Patch Changes
@@ -25,9 +25,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
25
25
 
26
26
  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
27
 
28
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
28
+ 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
29
 
30
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
30
+ 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
31
 
32
32
  var getFilteredFeatureFlags = function getFilteredFeatureFlags(keys, featureFlags) {
33
33
  return keys.reduce(function (result, key) {
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() {
@@ -81,6 +87,12 @@ Object.defineProperty(exports, "isMimeTypeSupportedByServer", {
81
87
  return _mediaTypeUtils.isMimeTypeSupportedByServer;
82
88
  }
83
89
  });
90
+ Object.defineProperty(exports, "isUndefined", {
91
+ enumerable: true,
92
+ get: function get() {
93
+ return _helpers.isUndefined;
94
+ }
95
+ });
84
96
  Object.defineProperty(exports, "isUnknownMimeTypeSupportedByServer", {
85
97
  enumerable: true,
86
98
  get: function get() {
@@ -93,6 +105,24 @@ Object.defineProperty(exports, "isVideoMimeTypeSupportedByServer", {
93
105
  return _mediaTypeUtils.isVideoMimeTypeSupportedByServer;
94
106
  }
95
107
  });
108
+ Object.defineProperty(exports, "matches", {
109
+ enumerable: true,
110
+ get: function get() {
111
+ return _helpers.matches;
112
+ }
113
+ });
114
+ Object.defineProperty(exports, "omitBy", {
115
+ enumerable: true,
116
+ get: function get() {
117
+ return _helpers.omitBy;
118
+ }
119
+ });
120
+ Object.defineProperty(exports, "pick", {
121
+ enumerable: true,
122
+ get: function get() {
123
+ return _helpers.pick;
124
+ }
125
+ });
96
126
  Object.defineProperty(exports, "useMemoizeFeatureFlags", {
97
127
  enumerable: true,
98
128
  get: function get() {
@@ -114,4 +144,6 @@ var _withMediaAnalyticsContext = require("./analytics/withMediaAnalyticsContext"
114
144
 
115
145
  var _constants = require("./analytics/constants");
116
146
 
117
- var _mediaTypeUtils = require("./mediaTypeUtils");
147
+ var _mediaTypeUtils = require("./mediaTypeUtils");
148
+
149
+ var _helpers = require("./utils/helpers");
@@ -18,7 +18,9 @@ var defaultMediaFeatureFlags = {
18
18
  mediaInline: false,
19
19
  // We can't yet switch this feature on
20
20
  // TODO https://product-fabric.atlassian.net/browse/MEX-104
21
- folderUploads: false
21
+ folderUploads: false,
22
+ timestampOnVideo: false,
23
+ observedWidth: false
22
24
  };
23
25
  /**
24
26
  * Public accessor from components to fallback to defaults if flags not passed,
@@ -76,7 +78,9 @@ var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
76
78
  newCardExperience: ffA.newCardExperience === ffB.newCardExperience,
77
79
  captions: ffA.captions === ffB.captions,
78
80
  mediaInline: ffA.mediaInline === ffB.mediaInline,
79
- folderUploads: ffA.folderUploads === ffB.folderUploads
81
+ folderUploads: ffA.folderUploads === ffB.folderUploads,
82
+ timestampOnVideo: ffA.timestampOnVideo === ffB.timestampOnVideo,
83
+ observedWidth: ffA.observedWidth === ffB.observedWidth
80
84
  };
81
85
  return Object.values(results).every(function (result) {
82
86
  return result;
@@ -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;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-common",
3
- "version": "2.10.1",
3
+ "version": "2.11.0",
4
4
  "sideEffects": false
5
5
  }
@@ -7,4 +7,5 @@ export { getMediaFeatureFlag, defaultMediaFeatureFlags, areEqualFeatureFlags, us
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';
@@ -8,7 +8,9 @@ export const defaultMediaFeatureFlags = {
8
8
  mediaInline: false,
9
9
  // We can't yet switch this feature on
10
10
  // TODO https://product-fabric.atlassian.net/browse/MEX-104
11
- folderUploads: false
11
+ folderUploads: false,
12
+ timestampOnVideo: false,
13
+ observedWidth: false
12
14
  };
13
15
  /**
14
16
  * Public accessor from components to fallback to defaults if flags not passed,
@@ -62,7 +64,9 @@ export const areEqualFeatureFlags = (ffA, ffB) => {
62
64
  newCardExperience: ffA.newCardExperience === ffB.newCardExperience,
63
65
  captions: ffA.captions === ffB.captions,
64
66
  mediaInline: ffA.mediaInline === ffB.mediaInline,
65
- folderUploads: ffA.folderUploads === ffB.folderUploads
67
+ folderUploads: ffA.folderUploads === ffB.folderUploads,
68
+ timestampOnVideo: ffA.timestampOnVideo === ffB.timestampOnVideo,
69
+ observedWidth: ffA.observedWidth === ffB.observedWidth
66
70
  };
67
71
  return Object.values(results).every(result => result);
68
72
  };
@@ -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
+ };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-common",
3
- "version": "2.10.1",
3
+ "version": "2.11.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,9 +1,9 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
 
4
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
4
+ 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; }
5
5
 
6
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
+ 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) { _defineProperty(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; }
7
7
 
8
8
  import React, { forwardRef, useMemo } from 'react';
9
9
  import { AnalyticsContext } from '@atlaskit/analytics-next';
package/dist/esm/index.js CHANGED
@@ -7,4 +7,5 @@ export { getMediaFeatureFlag, defaultMediaFeatureFlags, areEqualFeatureFlags, us
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';
@@ -8,7 +8,9 @@ export var defaultMediaFeatureFlags = {
8
8
  mediaInline: false,
9
9
  // We can't yet switch this feature on
10
10
  // TODO https://product-fabric.atlassian.net/browse/MEX-104
11
- folderUploads: false
11
+ folderUploads: false,
12
+ timestampOnVideo: false,
13
+ observedWidth: false
12
14
  };
13
15
  /**
14
16
  * Public accessor from components to fallback to defaults if flags not passed,
@@ -62,7 +64,9 @@ export var areEqualFeatureFlags = function areEqualFeatureFlags(ffA, ffB) {
62
64
  newCardExperience: ffA.newCardExperience === ffB.newCardExperience,
63
65
  captions: ffA.captions === ffB.captions,
64
66
  mediaInline: ffA.mediaInline === ffB.mediaInline,
65
- folderUploads: ffA.folderUploads === ffB.folderUploads
67
+ folderUploads: ffA.folderUploads === ffB.folderUploads,
68
+ timestampOnVideo: ffA.timestampOnVideo === ffB.timestampOnVideo,
69
+ observedWidth: ffA.observedWidth === ffB.observedWidth
66
70
  };
67
71
  return Object.values(results).every(function (result) {
68
72
  return result;
@@ -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
+ };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-common",
3
- "version": "2.10.1",
3
+ "version": "2.11.0",
4
4
  "sideEffects": false
5
5
  }
@@ -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';
@@ -3,6 +3,8 @@ export interface MediaFeatureFlags {
3
3
  captions?: boolean;
4
4
  mediaInline?: boolean;
5
5
  folderUploads?: boolean;
6
+ timestampOnVideo?: boolean;
7
+ observedWidth?: boolean;
6
8
  }
7
9
  export interface WithMediaFeatureFlags {
8
10
  featureFlags?: 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.10.1",
3
+ "version": "2.11.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.2.0",
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,10 +44,9 @@
44
44
  },
45
45
  "devDependencies": {
46
46
  "@atlaskit/docs": "*",
47
- "@atlaskit/media-test-helpers": "^29.0.0",
47
+ "@atlaskit/media-test-helpers": "^29.2.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
52
  "typescript": "3.9.6"