@ntbjs/react-components 1.2.0-rc.7 → 1.2.0-rc.71

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 (77) hide show
  1. package/ActionButton-46735b89.js +61 -0
  2. package/Alert-13b75102.js +117 -0
  3. package/AssetGallery-12ff227b.js +1923 -0
  4. package/{AssetPreviewTopBar-d4e976ab.js → AssetPreviewTopBar-c28715f7.js} +15 -15
  5. package/Badge-aec841c8.js +221 -0
  6. package/{Button-f1f783e2.js → Button-49f82b31.js} +3 -3
  7. package/{Checkbox-0cb45351.js → Checkbox-68dc38a8.js} +1 -1
  8. package/{CompactAutocompleteSelect-ad337fac.js → CompactAutocompleteSelect-5982dcf2.js} +110 -79
  9. package/{CompactStarRating-147445be.js → CompactStarRating-a754fc6f.js} +77 -44
  10. package/{CompactTextInput-88e90e94.js → CompactTextInput-baf13d5c.js} +73 -46
  11. package/{ContextMenu-8c9d90a1.js → ContextMenu-4ec3d9f3.js} +1 -1
  12. package/ContextMenuItem-ba2b697e.js +110 -0
  13. package/{InputGroup-53a44ae6.js → InputGroup-49fbc423.js} +1 -1
  14. package/{Instructions-580e2b8a.js → Instructions-ae40a489.js} +23 -10
  15. package/{MultiLevelCheckboxSelect-26a0024b.js → MultiLevelCheckboxSelect-24c88aaa.js} +58 -87
  16. package/{MultiSelect-7e865f37.js → MultiSelect-4b8d3d0d.js} +2 -2
  17. package/{Popover-209357df.js → Popover-569cd272.js} +33 -7
  18. package/{Radio-a6ba38ed.js → Radio-32d0513a.js} +1 -1
  19. package/{SectionSeparator-961ec4de.js → SectionSeparator-259a22ed.js} +1 -1
  20. package/{Switch-9e68deb2.js → Switch-4a41585f.js} +1 -1
  21. package/{Tab-3580786b.js → Tab-f499ecbc.js} +1 -1
  22. package/{Tabs-511523e0.js → Tabs-ea48ce3e.js} +48 -44
  23. package/TextArea-1c89fe55.js +490 -0
  24. package/{TextInput-97f7da4d.js → TextInput-0d109708.js} +1 -1
  25. package/{Tooltip-5ccdfe34.js → Tooltip-66daf6e3.js} +4 -4
  26. package/VerificationStatusIcon-6fe95a92.js +118 -0
  27. package/data/Alert/index.js +3 -2
  28. package/data/Badge/index.js +2 -2
  29. package/data/Popover/index.js +4 -3
  30. package/data/Tab/index.js +2 -2
  31. package/data/Tabs/index.js +3 -3
  32. package/data/Tooltip/index.js +3 -3
  33. package/data/index.js +11 -8
  34. package/{defaultTheme-0dd58df6.js → defaultTheme-ea44e34a.js} +1 -1
  35. package/icons/add.svg +3 -0
  36. package/icons/album.svg +3 -0
  37. package/icons/check-rectangle-filled.svg +3 -0
  38. package/icons/corporate.svg +3 -0
  39. package/icons/download.svg +3 -3
  40. package/icons/index.js +77 -0
  41. package/icons/layers.svg +3 -0
  42. package/icons/play.svg +3 -3
  43. package/icons/shopping_cart_add.svg +3 -0
  44. package/icons/verification.svg +3 -0
  45. package/inputs/ActionButton/index.js +3 -2
  46. package/inputs/Button/index.js +6 -5
  47. package/inputs/Checkbox/index.js +2 -2
  48. package/inputs/CompactAutocompleteSelect/index.js +14 -4
  49. package/inputs/CompactStarRating/index.js +14 -3
  50. package/inputs/CompactTextInput/index.js +11 -10
  51. package/inputs/MultiSelect/index.js +3 -3
  52. package/inputs/Radio/index.js +2 -2
  53. package/inputs/Switch/index.js +2 -2
  54. package/inputs/TextArea/index.js +14 -3
  55. package/inputs/TextInput/index.js +2 -2
  56. package/inputs/index.js +27 -26
  57. package/layout/InputGroup/index.js +2 -2
  58. package/layout/SectionSeparator/index.js +2 -2
  59. package/layout/index.js +3 -3
  60. package/package.json +2 -1
  61. package/{react-select-creatable.esm-4c3da560.js → react-select-creatable.esm-2f23d6c6.js} +3 -3
  62. package/shift-away-subtle-0bed9a3c.js +9 -0
  63. package/styles/config.scss +3 -1
  64. package/widgets/AssetGallery/index.js +32 -30
  65. package/widgets/AssetPreview/AssetPreviewTopBar/index.js +2 -2
  66. package/widgets/ContextMenu/ContextMenuItem/index.js +5 -105
  67. package/widgets/ContextMenu/ContextMenuItemsGroup/index.js +1 -1
  68. package/widgets/ContextMenu/index.js +2 -2
  69. package/widgets/Instructions/index.js +16 -6
  70. package/widgets/index.js +35 -32
  71. package/ActionButton-f150aedb.js +0 -43
  72. package/Alert-d7863c58.js +0 -62
  73. package/AssetGallery-8ad205c8.js +0 -1396
  74. package/Badge-fa8f327e.js +0 -154
  75. package/TextArea-4fe22aee.js +0 -348
  76. package/check-555d831b.js +0 -213
  77. package/shift-away-subtle-3cede45b.js +0 -9
@@ -0,0 +1,1923 @@
1
+ 'use strict';
2
+
3
+ var defaultTheme = require('./defaultTheme-ea44e34a.js');
4
+ var lodash = require('lodash');
5
+ var React = require('react');
6
+ var useMergedRefs = require('./useMergedRefs-b6d2f8fc.js');
7
+ var ResizeObserver = require('resize-observer-polyfill');
8
+ var MultiLevelCheckboxSelect = require('./MultiLevelCheckboxSelect-24c88aaa.js');
9
+ var styled = require('styled-components');
10
+ var reactLazyLoadImageComponent = require('react-lazy-load-image-component');
11
+ var warningCircle = require('./warning-circle-24522402.js');
12
+ var Alert = require('./Alert-13b75102.js');
13
+ var Badge = require('./Badge-aec841c8.js');
14
+ var Popover = require('./Popover-569cd272.js');
15
+ require('./Tab-f499ecbc.js');
16
+ require('./Tabs-ea48ce3e.js');
17
+ var Tooltip = require('./Tooltip-66daf6e3.js');
18
+ require('./VerificationStatusIcon-6fe95a92.js');
19
+ var ActionButton = require('./ActionButton-46735b89.js');
20
+ require('./Button-49f82b31.js');
21
+ require('./Checkbox-68dc38a8.js');
22
+ require('./CompactAutocompleteSelect-5982dcf2.js');
23
+ require('./CompactStarRating-a754fc6f.js');
24
+ require('./CompactTextInput-baf13d5c.js');
25
+ require('./MultiSelect-4b8d3d0d.js');
26
+ require('./Radio-32d0513a.js');
27
+ require('./TextArea-1c89fe55.js');
28
+ require('./TextInput-0d109708.js');
29
+ require('./Switch-4a41585f.js');
30
+ var ContextMenu = require('./ContextMenu-4ec3d9f3.js');
31
+ var ContextMenuItem = require('./ContextMenuItem-ba2b697e.js');
32
+ var polished = require('polished');
33
+
34
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
35
+
36
+ function _interopNamespace(e) {
37
+ if (e && e.__esModule) return e;
38
+ var n = Object.create(null);
39
+ if (e) {
40
+ Object.keys(e).forEach(function (k) {
41
+ if (k !== 'default') {
42
+ var d = Object.getOwnPropertyDescriptor(e, k);
43
+ Object.defineProperty(n, k, d.get ? d : {
44
+ enumerable: true,
45
+ get: function () {
46
+ return e[k];
47
+ }
48
+ });
49
+ }
50
+ });
51
+ }
52
+ n['default'] = e;
53
+ return Object.freeze(n);
54
+ }
55
+
56
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
57
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
58
+ var ResizeObserver__default = /*#__PURE__*/_interopDefaultLegacy(ResizeObserver);
59
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
60
+
61
+ function _extends$3() { _extends$3 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$3.apply(this, arguments); }
62
+
63
+ var _ref$3 = /*#__PURE__*/React__namespace.createElement("path", {
64
+ fill: "currentColor",
65
+ d: "M10.146 17.622l9.412-9.412-1.87-1.869-7.542 7.543-3.805-3.805-1.869 1.87 5.674 5.673zM2.67 24.03q-1.101 0-1.886-.784T0 21.36V2.67Q0 1.569.784.784T2.67 0h18.69q1.101 0 1.886.784t.784 1.886v18.69q0 1.101-.784 1.886t-1.886.784H2.67z"
66
+ });
67
+
68
+ function SvgCheckRectangleFilled(props) {
69
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$3({
70
+ xmlns: "http://www.w3.org/2000/svg",
71
+ viewBox: "0 0 24 24"
72
+ }, props), _ref$3);
73
+ }
74
+
75
+ function _extends$2() { _extends$2 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$2.apply(this, arguments); }
76
+
77
+ var _ref$2 = /*#__PURE__*/React__namespace.createElement("path", {
78
+ d: "M9 21H5q-.825 0-1.413-.587Q3 19.825 3 19v-7q0-1.875.712-3.513.713-1.637 1.926-2.85 1.212-1.212 2.85-1.925Q10.125 3 12 3t3.513.712q1.637.713 2.85 1.925 1.212 1.213 1.925 2.85Q21 10.125 21 12v7q0 .825-.587 1.413Q19.825 21 19 21h-4v-8h4v-1q0-2.925-2.038-4.963Q14.925 5 12 5T7.038 7.037Q5 9.075 5 12v1h4zm-2-6H5v4h2zm10 0v4h2v-4zm0 0h2-2zM7 15H5z"
79
+ });
80
+
81
+ function SvgHeadset(props) {
82
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$2({
83
+ xmlns: "http://www.w3.org/2000/svg",
84
+ fill: "currentColor",
85
+ viewBox: "0 0 24 24"
86
+ }, props), _ref$2);
87
+ }
88
+
89
+ function _extends$1() { _extends$1 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1.apply(this, arguments); }
90
+
91
+ var _ref$1 = /*#__PURE__*/React__namespace.createElement("path", {
92
+ fill: "currentColor",
93
+ d: "M11.16 23.622L0 14.942l2.046-1.55 9.114 7.068 9.114-7.068 2.046 1.55-11.16 8.68zm0-6.262L0 8.68 11.16 0l11.16 8.68-11.16 8.68z"
94
+ });
95
+
96
+ function SvgLayers(props) {
97
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$1({
98
+ xmlns: "http://www.w3.org/2000/svg",
99
+ viewBox: "-1 0 24 24"
100
+ }, props), _ref$1);
101
+ }
102
+
103
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
104
+
105
+ var _ref = /*#__PURE__*/React__namespace.createElement("path", {
106
+ fill: "currentColor",
107
+ d: "M0 23.52V0l18.48 11.76L0 23.52z"
108
+ });
109
+
110
+ function SvgPlay(props) {
111
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends({
112
+ xmlns: "http://www.w3.org/2000/svg",
113
+ viewBox: "-3 -0.25 24 24"
114
+ }, props), _ref);
115
+ }
116
+
117
+ var assetShape = {
118
+ key: defaultTheme.PropTypes.oneOfType([defaultTheme.PropTypes.string, defaultTheme.PropTypes.number]).isRequired,
119
+ previewUrl: defaultTheme.PropTypes.string,
120
+ title: defaultTheme.PropTypes.string,
121
+ note: defaultTheme.PropTypes.shape({
122
+ icon: defaultTheme.PropTypes.element,
123
+ message: defaultTheme.PropTypes.string
124
+ }),
125
+ width: defaultTheme.PropTypes.number,
126
+ height: defaultTheme.PropTypes.number,
127
+ fileType: defaultTheme.PropTypes.oneOf(['image', 'video', 'pdf', 'file', 'audio']).isRequired,
128
+ fileTypeIconPosition: defaultTheme.PropTypes.oneOf(['top-left', 'top-right']),
129
+ group: defaultTheme.PropTypes.string,
130
+ actions: defaultTheme.PropTypes.arrayOf(defaultTheme.PropTypes.shape({
131
+ title: defaultTheme.PropTypes.string.isRequired,
132
+ icon: defaultTheme.PropTypes.element.isRequired,
133
+ onClick: defaultTheme.PropTypes.func.isRequired,
134
+ className: defaultTheme.PropTypes.shape,
135
+ component: defaultTheme.PropTypes.func
136
+ })),
137
+ overlay: defaultTheme.PropTypes.element,
138
+ completed: defaultTheme.PropTypes.bool,
139
+ hasError: defaultTheme.PropTypes.bool,
140
+ disabled: defaultTheme.PropTypes.bool,
141
+ onClick: defaultTheme.PropTypes.func,
142
+ onContextMenu: defaultTheme.PropTypes.func,
143
+ onMouseEnter: defaultTheme.PropTypes.func,
144
+ summary: defaultTheme.PropTypes.shape({
145
+ title: defaultTheme.PropTypes.string,
146
+ description: defaultTheme.PropTypes.string,
147
+ instructions: defaultTheme.PropTypes.string,
148
+ instructionsType: defaultTheme.PropTypes.oneOf(['warning', 'error', 'info']),
149
+ headerLeft: defaultTheme.PropTypes.node,
150
+ headerRight: defaultTheme.PropTypes.node,
151
+ footerLeft: defaultTheme.PropTypes.node,
152
+ footerRight: defaultTheme.PropTypes.node
153
+ })
154
+ };
155
+ var assetShapeWithLayout = defaultTheme._objectSpread2(defaultTheme._objectSpread2({}, assetShape), {}, {
156
+ layout: defaultTheme.PropTypes.shape({
157
+ width: defaultTheme.PropTypes.number.isRequired,
158
+ height: defaultTheme.PropTypes.number.isRequired,
159
+ translateX: defaultTheme.PropTypes.number.isRequired,
160
+ translateY: defaultTheme.PropTypes.number.isRequired,
161
+ type: defaultTheme.PropTypes.oneOf(['groupLabel', 'asset']).isRequired,
162
+ hasHeightAndWidth: defaultTheme.PropTypes.bool
163
+ }).isRequired
164
+ });
165
+
166
+ var _templateObject$3, _templateObject2$3, _templateObject3$3;
167
+ var AssetGalleryBase$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject$3 || (_templateObject$3 = defaultTheme._taggedTemplateLiteral(["\n position: relative;\n"])));
168
+ var GroupLabel = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject2$3 || (_templateObject2$3 = defaultTheme._taggedTemplateLiteral(["\n font-family: ", ";\n ", "\n display: flex;\n align-items: flex-end;\n position: absolute;\n padding-bottom: 4px;\n box-sizing: border-box;\n"])), function (props) {
169
+ return props.theme.primaryFontFamily;
170
+ }, function (props) {
171
+ return props.theme.themeProp('color', props.theme.getColor('gray-100'), props.theme.getColor('gray-700'));
172
+ });
173
+ var AssetGalleryCardBase = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject3$3 || (_templateObject3$3 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n margin: 0;\n z-index: 1;\n will-change: transform, width, height;\n\n &:hover {\n z-index: 2;\n }\n"])));
174
+
175
+ var css_248z = ".lazy-load-image-background.opacity {\n opacity: 0;\n}\n\n.lazy-load-image-background.opacity.lazy-load-image-loaded {\n opacity: 1;\n transition: opacity .3s;\n}\n";
176
+ defaultTheme.styleInject(css_248z);
177
+
178
+ var convertMsToHMS = function convertMsToHMS(ms) {
179
+ var seconds = Math.floor(ms / 1000);
180
+ var minutes = Math.floor(seconds / 60);
181
+ var hours = Math.floor(minutes / 60);
182
+ var secondsLeft = seconds % 60;
183
+ var minutesLeft = minutes % 60;
184
+ var hmsString = '';
185
+
186
+ if (hours) {
187
+ hmsString += hours < 10 ? "0".concat(hours, ":") : "".concat(hours, ":");
188
+ }
189
+
190
+ hmsString += "".concat(minutesLeft < 10 ? "0".concat(minutesLeft) : "".concat(minutesLeft), ":");
191
+ hmsString += secondsLeft < 10 ? "0".concat(secondsLeft) : "".concat(secondsLeft);
192
+ return hmsString;
193
+ };
194
+
195
+ var _templateObject$2, _templateObject2$2, _templateObject3$2, _templateObject4$2, _templateObject5$2, _templateObject6$2, _templateObject7$2, _templateObject8$2, _templateObject9$2, _templateObject10$2, _templateObject11$2, _templateObject12$2, _templateObject13$2;
196
+ var SummaryCard$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject$2 || (_templateObject$2 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n width: ", ";\n\n ", "\n"])), function (props) {
197
+ return props.width ? "".concat(props.width, "px") : '100%';
198
+ }, function (props) {
199
+ return props.useBorder ? props.theme.themeProp('border', "1px solid ".concat(props.theme.getColor('gray-500')), "1px solid ".concat(props.theme.getColor('gray-300'))) : null;
200
+ });
201
+ var Gutter = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject2$2 || (_templateObject2$2 = defaultTheme._taggedTemplateLiteral(["\n ", "\n padding-bottom: ", "px;\n"])), function (props) {
202
+ if (props.renderAsMargin) {
203
+ return styled.css(_templateObject3$2 || (_templateObject3$2 = defaultTheme._taggedTemplateLiteral(["\n margin-bottom: ", "px;\n "])), props.gutter || 8);
204
+ } else {
205
+ return styled.css(_templateObject4$2 || (_templateObject4$2 = defaultTheme._taggedTemplateLiteral(["\n padding-bottom: ", "px;\n "])), props.gutter || 8);
206
+ }
207
+ }, function (props) {
208
+ return props.gutter || 8;
209
+ });
210
+ var Header = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject5$2 || (_templateObject5$2 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 16px;\n"])));
211
+ var HeaderLeft = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject6$2 || (_templateObject6$2 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: flex-start;\n\n > * {\n margin-right: 4px;\n }\n"])));
212
+ var HeaderRight = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject7$2 || (_templateObject7$2 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: flex-end;\n\n > * {\n margin-left: 4px;\n }\n"])));
213
+ var Title = styled__default['default'].span.attrs(defaultTheme.applyDefaultTheme)(_templateObject8$2 || (_templateObject8$2 = defaultTheme._taggedTemplateLiteral(["\n display: inline-block;\n padding: 0 16px;\n font: normal normal 500 14px/19px Roboto;\n letter-spacing: 0.28px;\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n box-sizing: border-box;\n\n ", ";\n"])), function (props) {
214
+ return props.theme.themeProp('color', props.theme.getColor('white'), props.theme.getColor('gray-700'));
215
+ });
216
+ var Description = styled__default['default'].span.attrs(defaultTheme.applyDefaultTheme)(_templateObject9$2 || (_templateObject9$2 = defaultTheme._taggedTemplateLiteral(["\n padding: 0 16px;\n text-align: left;\n font: normal normal normal 12px/16px Roboto;\n letter-spacing: 0.24px;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n box-sizing: border-box;\n\n ", ";\n"])), function (props) {
217
+ return props.theme.themeProp('color', props.theme.getColor('white'), props.theme.getColor('gray-700'));
218
+ });
219
+ var Instruction = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject10$2 || (_templateObject10$2 = defaultTheme._taggedTemplateLiteral([""])));
220
+ var Footer = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject11$2 || (_templateObject11$2 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 16px;\n"])));
221
+ var FooterLeft = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject12$2 || (_templateObject12$2 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: flex-start;\n\n > * {\n margin-right: 4px;\n }\n"])));
222
+ var FooterRight = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject13$2 || (_templateObject13$2 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: flex-end;\n\n > * {\n margin-left: 4px;\n }\n"])));
223
+
224
+ var SummaryCard = React__default['default'].forwardRef(function AssetSummaryCard(_ref, forwardedRef) {
225
+ var activeSummaryCard = _ref.activeSummaryCard,
226
+ title = _ref.title,
227
+ description = _ref.description,
228
+ instructions = _ref.instructions,
229
+ instructionsType = _ref.instructionsType,
230
+ headerLeft = _ref.headerLeft,
231
+ headerRight = _ref.headerRight,
232
+ footerLeft = _ref.footerLeft,
233
+ footerRight = _ref.footerRight,
234
+ width = _ref.width,
235
+ useBorder = _ref.useBorder,
236
+ props = defaultTheme._objectWithoutProperties(_ref, ["activeSummaryCard", "title", "description", "instructions", "instructionsType", "headerLeft", "headerRight", "footerLeft", "footerRight", "width", "useBorder"]);
237
+
238
+ var shouldRenderInstructions = !!instructions;
239
+ var shouldRenderHeader = !!headerLeft || !!headerRight;
240
+ var shouldRenderFooter = !!footerLeft || !!footerRight;
241
+ var shouldAddGutterAfterInstructions = shouldRenderInstructions && shouldRenderFooter;
242
+ var shouldAddGutterAfterTitle = !!title && (!!description || !!instructions || shouldRenderFooter);
243
+ if (!activeSummaryCard) return null;
244
+ return React__default['default'].createElement(SummaryCard$1, defaultTheme._extends({
245
+ ref: forwardedRef,
246
+ width: width,
247
+ useBorder: useBorder
248
+ }, props), shouldRenderHeader && React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(Gutter, {
249
+ gutter: 8
250
+ }), React__default['default'].createElement(Header, null, React__default['default'].createElement(HeaderLeft, null, headerLeft), React__default['default'].createElement(HeaderRight, null, headerRight))), React__default['default'].createElement(Gutter, {
251
+ gutter: shouldRenderHeader ? 8 : 16
252
+ }), title && React__default['default'].createElement(Title, null, title), shouldAddGutterAfterTitle && React__default['default'].createElement(Gutter, {
253
+ gutter: 4
254
+ }), description && React__default['default'].createElement(Description, null, description), React__default['default'].createElement(Gutter, {
255
+ gutter: 16
256
+ }), shouldRenderInstructions && React__default['default'].createElement(Instruction, null, React__default['default'].createElement(Alert.Alert, {
257
+ icon: React__default['default'].createElement(warningCircle.SvgWarningCircle, null),
258
+ alertMessage: instructions,
259
+ type: instructionsType,
260
+ fontSize: 12,
261
+ verticalPadding: 12,
262
+ horizontalPadding: 16,
263
+ width: width,
264
+ lineClamp: 1
265
+ })), shouldAddGutterAfterInstructions && React__default['default'].createElement(Gutter, {
266
+ gutter: 16
267
+ }), shouldRenderFooter && React__default['default'].createElement(Footer, null, React__default['default'].createElement(FooterLeft, null, footerLeft), React__default['default'].createElement(FooterRight, null, footerRight)), shouldRenderFooter && React__default['default'].createElement(Gutter, {
268
+ gutter: 16
269
+ }));
270
+ });
271
+ SummaryCard.propTypes = process.env.NODE_ENV !== "production" ? {
272
+ activeSummaryCard: defaultTheme.PropTypes.bool,
273
+ title: defaultTheme.PropTypes.string,
274
+ description: defaultTheme.PropTypes.string,
275
+ instructions: defaultTheme.PropTypes.string,
276
+ instructionsType: defaultTheme.PropTypes.oneOf(['warning', 'error', 'info']),
277
+ headerLeft: defaultTheme.PropTypes.node,
278
+ headerRight: defaultTheme.PropTypes.node,
279
+ footerLeft: defaultTheme.PropTypes.node,
280
+ footerRight: defaultTheme.PropTypes.node,
281
+ width: defaultTheme.PropTypes.number,
282
+ useBorder: defaultTheme.PropTypes.bool
283
+ } : {};
284
+ SummaryCard.defaultProps = {
285
+ title: '',
286
+ description: '',
287
+ instructions: '',
288
+ instructionsType: 'info',
289
+ headerLeft: null,
290
+ headerRight: null,
291
+ footerLeft: null,
292
+ footerRight: null,
293
+ useBorder: false,
294
+ activeSummaryCard: false
295
+ };
296
+
297
+ var _templateObject$1, _templateObject2$1, _templateObject3$1, _templateObject4$1, _templateObject5$1, _templateObject6$1, _templateObject7$1, _templateObject8$1, _templateObject9$1, _templateObject10$1, _templateObject11$1, _templateObject12$1, _templateObject13$1, _templateObject14$1, _templateObject15$1, _templateObject16$1, _templateObject17$1, _templateObject18$1, _templateObject19$1, _templateObject20$1, _templateObject21$1, _templateObject22$1, _templateObject23$1, _templateObject24$1, _templateObject25$1, _templateObject26$1;
298
+ var AssetGalleryWrapper$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject$1 || (_templateObject$1 = defaultTheme._taggedTemplateLiteral(["\n ", ";\n"])), function (props) {
299
+ return props.disabled && styled.css(_templateObject2$1 || (_templateObject2$1 = defaultTheme._taggedTemplateLiteral(["\n cursor: not-allowed;\n "])));
300
+ });
301
+ var AssetGalleryCompactCard$2 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject3$1 || (_templateObject3$1 = defaultTheme._taggedTemplateLiteral(["\n display: block;\n height: 100%;\n padding-left: ", "px;\n padding-right: ", "px;\n padding-top: ", "px;\n box-sizing: border-box;\n cursor: pointer;\n\n ", ";\n\n ", ";\n\n ", ";\n\n ", "\n video {\n width: 100%;\n height: 100%;\n }\n\n .audio {\n display: flex;\n justify-content: center;\n svg {\n width: 25%;\n }\n }\n"])), function (props) {
302
+ return props.selected ? 1 : 0;
303
+ }, function (props) {
304
+ return props.selected ? 1 : 0;
305
+ }, function (props) {
306
+ return props.selected ? 1 : 0;
307
+ }, function (props) {
308
+ return props.theme.themeProp('background', props.theme.getColor('gray-700'), props.theme.getColor('gray-300'));
309
+ }, function (props) {
310
+ return props.theme.themeProp('color', props.theme.getColor('gray-100'), props.theme.getColor('gray-700'));
311
+ }, function (props) {
312
+ return props.disabled && styled.css(_templateObject4$1 || (_templateObject4$1 = defaultTheme._taggedTemplateLiteral(["\n pointer-events: none;\n opacity: 0.4;\n "])));
313
+ }, function (props) {
314
+ return props.extendedSelectMode && styled.css(_templateObject5$1 || (_templateObject5$1 = defaultTheme._taggedTemplateLiteral(["\n cursor: pointer;\n "])));
315
+ });
316
+ var Figure$1 = styled__default['default'].figure(_templateObject6$1 || (_templateObject6$1 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n position: relative;\n margin: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n\n .lazy-load-image-background {\n display: block !important;\n }\n\n img {\n display: block;\n height: 100%;\n width: 100%;\n ", "\n }\n"])), function (props) {
317
+ return props.hasHeightAndWidth ? styled.css(_templateObject7$1 || (_templateObject7$1 = defaultTheme._taggedTemplateLiteral(["\n object-fit: cover;\n "]))) : styled.css(_templateObject8$1 || (_templateObject8$1 = defaultTheme._taggedTemplateLiteral(["\n object-fit: contain;\n "])));
318
+ });
319
+ var FigureOverlayBackdrop$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject9$1 || (_templateObject9$1 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n inset: 0;\n opacity: ", ";\n background-color: ", ";\n"])), function (props) {
320
+ return props.selected ? 0.6 : 0;
321
+ }, function (props) {
322
+ return props.selected ? '#ACCEF7' : 'transparent';
323
+ });
324
+ var Overlay$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject10$1 || (_templateObject10$1 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n"])));
325
+ var OverlayBackdrop$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject11$1 || (_templateObject11$1 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n opacity: 0;\n transition: opacity 220ms;\n\n ", "\n ", "\n ", ":hover & {\n opacity: 1;\n }\n"])), function (props) {
326
+ return !props.selected ? styled.css(_templateObject12$1 || (_templateObject12$1 = defaultTheme._taggedTemplateLiteral(["\n background: radial-gradient(\n ellipse at center,\n rgba(0, 0, 0, 0.3) 27%,\n rgba(0, 0, 0, 0.5) 60%,\n rgba(0, 0, 0, 0.7) 90%\n );\n "]))) : null;
327
+ }, function (props) {
328
+ return (props.selected || props.softSelected) && styled.css(_templateObject13$1 || (_templateObject13$1 = defaultTheme._taggedTemplateLiteral(["\n opacity: 1;\n "])));
329
+ }, Overlay$1);
330
+ var OverlayInfo$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject14$1 || (_templateObject14$1 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n padding: 15px 12px 10px;\n color: ", ";\n"])), function (props) {
331
+ return props.theme.getColor('gray-100');
332
+ });
333
+ var OverlayCompleted = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject15$1 || (_templateObject15$1 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n transition: border-color 120ms;\n border: 3px solid;\n ", ";\n"])), function (props) {
334
+ if (props.softSelected) return null;
335
+ return props.theme.themeProp('border-color', props.theme.getColor('emerald-500'), polished.rgba(props.theme.getColor('emerald-500'), 0.7));
336
+ });
337
+ var OverlayHasError = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject16$1 || (_templateObject16$1 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n transition: border-color 120ms;\n border: 3px solid;\n ", "\n"])), function (props) {
338
+ if (props.softSelected) return null;
339
+ return props.theme.themeProp('border-color', props.theme.getColor('red-600'), polished.rgba(props.theme.getColor('red-500'), 0.7));
340
+ });
341
+ var OverlaySelected$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject17$1 || (_templateObject17$1 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n transition: border-color 120ms;\n border-style: solid;\n border-width: 3px;\n\n ", ";\n"])), function (props) {
342
+ if (props.softSelected) {
343
+ return props.theme.themeProp('border-color', polished.rgba(props.theme.getColor('gray-100'), 0.5), polished.rgba(props.theme.getColor('gray-700'), 0.5));
344
+ }
345
+
346
+ if (props.selected) {
347
+ return props.theme.themeProp('border-color', props.theme.getColor('gray-100'), props.theme.getColor('gray-700'));
348
+ }
349
+
350
+ return props.theme.themeProp('border-color', 'transparent', 'transparent');
351
+ });
352
+ var OverlayInfoTop$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject18$1 || (_templateObject18$1 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n padding: 8px;\n display: flex;\n"])));
353
+ var OverlayInfoTopActions$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject19$1 || (_templateObject19$1 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n right: 0;\n padding: 4px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n transition: opacity 220ms;\n z-index: 99999;\n ", "\n\n opacity: ", ";\n"])), function (props) {
354
+ return props.theme.themeProp('color', props.theme.getColor('gray-300'), props.theme.getColor('gray-700'));
355
+ }, function (props) {
356
+ return props.isOverlayHovered ? 1 : 0;
357
+ });
358
+ var OverlayInfoTopLeft = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject20$1 || (_templateObject20$1 = defaultTheme._taggedTemplateLiteral(["\n opacity: 1;\n display: ", ";\n\n ", ":hover & {\n opacity: 0;\n }\n"])), function (props) {
359
+ return props !== null && props !== void 0 && props.collapseExtraInfo ? 'none' : 'block';
360
+ }, Overlay$1);
361
+ var OverlayInfoTopWarning$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject21$1 || (_templateObject21$1 = defaultTheme._taggedTemplateLiteral(["\n margin-left: auto;\n height: 24px;\n width: 24px;\n border-radius: 50%;\n box-sizing: border-box;\n padding: ", ";\n background-color: ", ";\n opacity: 1;\n\n svg {\n width: 100%;\n color: ", ";\n }\n\n ", ":hover & {\n opacity: 0;\n }\n"])), function (props) {
362
+ return props.type === 'error' ? 0 : '3px 4px';
363
+ }, function (props) {
364
+ return props.type === 'error' ? props.theme.getColor('red-500') : props.theme.getColor('gray-100');
365
+ }, function (props) {
366
+ return props.type === 'error' ? props.theme.getColor('gray-100') : props.theme.getColor('gray-700');
367
+ }, Overlay$1);
368
+ var OverlayInfoBottom$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject22$1 || (_templateObject22$1 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n padding: 8px;\n display: flex;\n"])));
369
+ var OverlayInfoBottomSelectButton$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject23$1 || (_templateObject23$1 = defaultTheme._taggedTemplateLiteral(["\n opacity: ", ";\n flex-shrink: 0;\n cursor: pointer;\n transition: opacity 220ms;\n height: 24px;\n\n > svg {\n width: 24px;\n height: 24px;\n transition: opacity 120ms;\n opacity: ", ";\n }\n\n ", ":hover & {\n opacity: 1;\n }\n"])), function (props) {
370
+ return props.selected ? 1 : 0;
371
+ }, function (props) {
372
+ return props.selected ? 1 : 0.5;
373
+ }, Overlay$1);
374
+ var OverlayInfoBottomMediaIcon$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject24$1 || (_templateObject24$1 = defaultTheme._taggedTemplateLiteral(["\n margin-left: auto;\n opacity: 1;\n\n ", ":hover & {\n opacity: 0;\n }\n"])), Overlay$1);
375
+ var ConsumerDefinedOverlay$1 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject25$1 || (_templateObject25$1 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n"])));
376
+ var Fragment$1 = styled__default['default'].div(_templateObject26$1 || (_templateObject26$1 = defaultTheme._taggedTemplateLiteral(["\n margin: 4px;\n"])));
377
+
378
+ var ComputedRootComponent$1 = function ComputedRootComponent(_ref) {
379
+ var component = _ref.component,
380
+ asset = _ref.asset,
381
+ props = defaultTheme._objectWithoutProperties(_ref, ["component", "asset"]);
382
+
383
+ var newProps = lodash.mapKeys(lodash.omit(props, ['theme', 'extendedSelectMode']), function (_, key) {
384
+ return key === 'innerRef' ? 'ref' : key;
385
+ });
386
+
387
+ if (component) {
388
+ if (!lodash.isFunction(component)) throw Error('Expected a function in component-prop');
389
+
390
+ if (React__default['default'].isValidElement(component(asset, newProps.children))) {
391
+ return React__default['default'].cloneElement(component(asset, newProps.children), lodash.omit(newProps, ['children']));
392
+ }
393
+ }
394
+
395
+ return React__default['default'].createElement(AssetGalleryCompactCard$2, defaultTheme._extends({
396
+ ref: newProps.ref
397
+ }, newProps));
398
+ };
399
+
400
+ var ComputedActionButton$1 = React__default['default'].forwardRef(function ComputedActionButton(_ref2, forwardedRef) {
401
+ var component = _ref2.component,
402
+ className = _ref2.className,
403
+ _ref2$subActions = _ref2.subActions,
404
+ subActions = _ref2$subActions === void 0 ? [] : _ref2$subActions,
405
+ isSubActionsOpened = _ref2.isSubActionsOpened,
406
+ props = defaultTheme._objectWithoutProperties(_ref2, ["component", "className", "subActions", "isSubActionsOpened"]);
407
+
408
+ var newProps = props;
409
+
410
+ if (!lodash.isEmpty(subActions)) {
411
+ var contextMenuItems = subActions.map(function (subAction, key) {
412
+ var onClick = subAction.onClick,
413
+ title = subAction.title,
414
+ icon = subAction.icon;
415
+ return React__default['default'].createElement(ContextMenuItem.ContextMenuItem, {
416
+ key: key,
417
+ onClickEffect: onClick,
418
+ title: title,
419
+ icon: icon
420
+ });
421
+ });
422
+ var contextMenu = React__default['default'].createElement(ContextMenu.ContextMenu, null, contextMenuItems);
423
+ newProps.children = React__default['default'].createElement(Popover.Popover, {
424
+ contextMenu: true,
425
+ content: contextMenu,
426
+ placement: 'bottom-end',
427
+ visible: isSubActionsOpened,
428
+ zIndex: 10001,
429
+ offset: [0, -8]
430
+ }, React__default['default'].createElement(ActionButton.ActionButton, {
431
+ useShadow: true,
432
+ active: true,
433
+ ref: forwardedRef,
434
+ className: className,
435
+ icon: newProps.icon,
436
+ backgroundColors: ['black', 'white'],
437
+ onClick: newProps.onClick,
438
+ buttonWidthHeight: newProps.actionButtonWidthHeight
439
+ }));
440
+ } else {
441
+ newProps.children = React__default['default'].createElement(ActionButton.ActionButton, {
442
+ useShadow: true,
443
+ active: true,
444
+ ref: forwardedRef,
445
+ className: className,
446
+ icon: newProps.icon,
447
+ onClick: newProps.onClick,
448
+ backgroundColors: ['black', 'white'],
449
+ buttonWidthHeight: newProps.actionButtonWidthHeight
450
+ });
451
+ }
452
+
453
+ if (component) {
454
+ if (!lodash.isFunction(component)) throw Error('Expected a function in component-prop');
455
+
456
+ if (React__default['default'].isValidElement(component())) {
457
+ return React__default['default'].cloneElement(component(), defaultTheme._objectSpread2({}, lodash.omit(newProps, 'icon')));
458
+ }
459
+ }
460
+
461
+ return React__default['default'].createElement(React__default['default'].Fragment, null, newProps.children);
462
+ });
463
+
464
+ var AssetGalleryCompactCard = function AssetGalleryCompactCard(props) {
465
+ var _asset$note, _asset$note2, _asset$note3, _asset$note4;
466
+
467
+ var asset = props.asset,
468
+ activeSummaryCard = props.activeSummaryCard,
469
+ displayVersionCount = props.displayVersionCount,
470
+ displayVerificationIcon = props.displayVerificationIcon,
471
+ selectable = props.selectable,
472
+ hasHeightAndWidth = props.hasHeightAndWidth,
473
+ selected = props.selected,
474
+ extendedSelectMode = props.extendedSelectMode,
475
+ onAssetSelected = props.onAssetSelected,
476
+ onAssetUnselected = props.onAssetUnselected,
477
+ softSelected = props.softSelected,
478
+ component = props.component,
479
+ scrollPosition = props.scrollPosition,
480
+ collapseExtraInfo = props.collapseExtraInfo;
481
+
482
+ var _React$useState = React__default['default'].useState(false),
483
+ _React$useState2 = defaultTheme._slicedToArray(_React$useState, 2),
484
+ isOverlayHovered = _React$useState2[0],
485
+ setIsOverlayHovered = _React$useState2[1];
486
+
487
+ var _React$useState3 = React__default['default'].useState([]),
488
+ _React$useState4 = defaultTheme._slicedToArray(_React$useState3, 2),
489
+ openedSubActions = _React$useState4[0],
490
+ updateOpenedSubActions = _React$useState4[1];
491
+
492
+ React.useEffect(function () {
493
+ var _asset$actions;
494
+
495
+ var newOpenedSubActions = ((_asset$actions = asset === null || asset === void 0 ? void 0 : asset.actions) !== null && _asset$actions !== void 0 ? _asset$actions : []).map(function () {
496
+ return false;
497
+ });
498
+ updateOpenedSubActions(newOpenedSubActions);
499
+ }, [asset]);
500
+ React.useEffect(function () {
501
+ if (!isOverlayHovered && openedSubActions !== null && openedSubActions !== void 0 && openedSubActions.length) {
502
+ updateOpenedSubActions(openedSubActions.map(function () {
503
+ return false;
504
+ }));
505
+ }
506
+ }, [isOverlayHovered]);
507
+ var mouseHasEnteredOverlay = React.useCallback(function () {
508
+ setIsOverlayHovered(true);
509
+ }, []);
510
+ var mouseHasLeftOverlay = React.useCallback(function () {
511
+ setIsOverlayHovered(false);
512
+ }, []);
513
+ var onSubActionsViewToggle = React.useCallback(function (actionIndex) {
514
+ var newOpenedSubActions = openedSubActions.map(function (isOpened, index) {
515
+ if (index !== actionIndex) {
516
+ return false;
517
+ }
518
+
519
+ return !isOpened;
520
+ });
521
+ updateOpenedSubActions(newOpenedSubActions);
522
+ }, [openedSubActions]);
523
+ var shouldOpenSubActions = React.useCallback(function (actionIndex) {
524
+ return openedSubActions[actionIndex];
525
+ }, [openedSubActions]);
526
+ var isAnySubActionsOpened = React.useMemo(function () {
527
+ return openedSubActions.some(function (isOpened) {
528
+ return isOpened;
529
+ });
530
+ }, [openedSubActions]);
531
+
532
+ function onClick(event) {
533
+ if (extendedSelectMode) {
534
+ return onSelectClick(event);
535
+ }
536
+
537
+ if (lodash.isFunction(asset.onClick)) {
538
+ asset.onClick(event, asset);
539
+ }
540
+ }
541
+
542
+ function onSelectClick(event) {
543
+ event.preventDefault();
544
+ event.stopPropagation();
545
+
546
+ if (selected) {
547
+ return onAssetUnselected(asset.key);
548
+ }
549
+
550
+ if (selectable) {
551
+ return onAssetSelected(asset.key);
552
+ }
553
+ }
554
+
555
+ var onActionClick = React.useCallback(function (event, action, index) {
556
+ event.preventDefault();
557
+ event.stopPropagation();
558
+
559
+ if (lodash.isFunction(action === null || action === void 0 ? void 0 : action.onClick)) {
560
+ action.onClick(asset);
561
+ }
562
+
563
+ if (!lodash.isEmpty(action === null || action === void 0 ? void 0 : action.subActions)) {
564
+ onSubActionsViewToggle(index);
565
+ }
566
+ }, [onSubActionsViewToggle]);
567
+
568
+ function onContextMenu(event) {
569
+ event.preventDefault();
570
+ asset.onContextMenu(event);
571
+ }
572
+
573
+ React.useEffect(function () {
574
+ if (lodash.isFunction(asset.onContextMenu)) {
575
+ if (cardRef.current) {
576
+ cardRef.current.addEventListener('contextmenu', onContextMenu);
577
+ }
578
+
579
+ return function () {
580
+ if (cardRef.current) {
581
+ cardRef.current.removeEventListener('contextmenu', onContextMenu);
582
+ }
583
+ };
584
+ }
585
+ }, []);
586
+
587
+ function onDragstart(event) {
588
+ asset.onDragstart(event);
589
+ }
590
+
591
+ React.useEffect(function () {
592
+ if (lodash.isFunction(asset.onDragstart)) {
593
+ if (dragRef.current) {
594
+ dragRef.current.addEventListener('dragstart', onDragstart);
595
+ }
596
+
597
+ return function () {
598
+ if (dragRef.current) {
599
+ dragRef.current.removeEventListener('dragstart', onDragstart);
600
+ }
601
+ };
602
+ }
603
+ }, []);
604
+ var videoPlayerRef = React.useRef();
605
+ var cardRef = React.useRef();
606
+ var dragRef = React.useRef(null);
607
+
608
+ function onMouseEnter(event) {
609
+ if (videoPlayerRef.current) {
610
+ var playPromise = videoPlayerRef.current.play();
611
+
612
+ if (playPromise !== undefined) {
613
+ playPromise.then(function () {})["catch"](function () {});
614
+ }
615
+ }
616
+
617
+ if (lodash.isFunction(asset.onMouseEnter)) {
618
+ asset.onMouseEnter(event, asset);
619
+ }
620
+ }
621
+
622
+ function onMouseLeave() {
623
+ if (videoPlayerRef.current) {
624
+ videoPlayerRef.current.pause();
625
+ }
626
+ }
627
+
628
+ var renderPreview = function renderPreview(asset) {
629
+ var _asset$fileType, _asset$fileType2;
630
+
631
+ var previewContent = null;
632
+
633
+ if ((asset === null || asset === void 0 ? void 0 : (_asset$fileType = asset.fileType) === null || _asset$fileType === void 0 ? void 0 : _asset$fileType.toLowerCase()) === 'video') {
634
+ previewContent = React__default['default'].createElement(reactLazyLoadImageComponent.LazyLoadComponent, {
635
+ scrollPosition: scrollPosition
636
+ }, React__default['default'].createElement("video", {
637
+ ref: videoPlayerRef,
638
+ loop: true,
639
+ muted: true
640
+ }, React__default['default'].createElement("source", {
641
+ src: asset.previewUrl,
642
+ type: "video/mp4"
643
+ })));
644
+ } else if ((asset === null || asset === void 0 ? void 0 : (_asset$fileType2 = asset.fileType) === null || _asset$fileType2 === void 0 ? void 0 : _asset$fileType2.toLowerCase()) === 'audio') {
645
+ previewContent = React__default['default'].createElement(reactLazyLoadImageComponent.LazyLoadComponent, {
646
+ scrollPosition: scrollPosition
647
+ }, React__default['default'].createElement("div", {
648
+ className: "audio"
649
+ }, React__default['default'].createElement(SvgHeadset, null)));
650
+ } else {
651
+ previewContent = React__default['default'].createElement(reactLazyLoadImageComponent.LazyLoadImage, {
652
+ alt: asset === null || asset === void 0 ? void 0 : asset.title,
653
+ src: asset === null || asset === void 0 ? void 0 : asset.previewUrl,
654
+ height: "100%",
655
+ width: "100%",
656
+ delayMethod: "debounce",
657
+ delayTime: 0,
658
+ threshold: 1500,
659
+ scrollPosition: scrollPosition
660
+ });
661
+ }
662
+
663
+ return React__default['default'].createElement(Figure$1, {
664
+ hasHeightAndWidth: hasHeightAndWidth
665
+ }, previewContent, React__default['default'].createElement(FigureOverlayBackdrop$1, {
666
+ selected: selected
667
+ }));
668
+ };
669
+
670
+ React.useEffect(function () {
671
+ if (softSelected) {
672
+ cardRef.current.scrollIntoView({
673
+ behavior: 'smooth',
674
+ block: 'nearest'
675
+ });
676
+ }
677
+ }, [softSelected]);
678
+ var renderVersionsBadge = React.useCallback(function () {
679
+ if (!(asset !== null && asset !== void 0 && asset.versions)) return null;
680
+ return React__default['default'].createElement(Badge.Badge, {
681
+ badgeIcon: React__default['default'].createElement(SvgLayers, null),
682
+ badgeContent: asset.versions,
683
+ backgroundColors: ['black', 'black'],
684
+ colors: ['#f7f8f9', '#f7f8f9'],
685
+ fontSize: 12,
686
+ fontWeight: 500,
687
+ lineHeight: 16,
688
+ verticalPadding: 4,
689
+ horizontalPadding: 8
690
+ });
691
+ }, [asset]);
692
+ var renderVerificationBadge = React.useCallback(function () {
693
+ if (!(asset !== null && asset !== void 0 && asset.verifications)) return null;
694
+ return asset === null || asset === void 0 ? void 0 : asset.verifications;
695
+ }, [asset]);
696
+ var renderMediaBadge = React.useCallback(function () {
697
+ var badgeIcon = null;
698
+ var badgeContent = null;
699
+
700
+ if ((asset === null || asset === void 0 ? void 0 : asset.fileType) === 'video') {
701
+ badgeIcon = React__default['default'].createElement(SvgPlay, null);
702
+ }
703
+
704
+ if (asset !== null && asset !== void 0 && asset.duration) {
705
+ badgeContent = convertMsToHMS(asset.duration);
706
+ }
707
+
708
+ if (!badgeIcon && !badgeContent) return null;
709
+ return React__default['default'].createElement(Badge.Badge, {
710
+ badgeIcon: badgeIcon,
711
+ badgeContent: badgeContent,
712
+ backgroundColors: ['black', 'black'],
713
+ colors: ['#f7f8f9', '#f7f8f9'],
714
+ fontSize: 12,
715
+ fontWeight: 500,
716
+ lineHeight: 16,
717
+ verticalPadding: 4,
718
+ horizontalPadding: 8,
719
+ minWidth: 32,
720
+ height: 24
721
+ });
722
+ }, [asset]);
723
+ var renderSummaryCardHeaderLeft = React.useCallback(function () {
724
+ return React__default['default'].createElement(React__default['default'].Fragment, null, renderVersionsBadge(), renderMediaBadge());
725
+ }, [asset]);
726
+ var renderPopoverContent = React.useCallback(function () {
727
+ var _asset$summary, _asset$summary2, _asset$summary3, _asset$summary4, _asset$summary5, _asset$summary6, _asset$summary7, _asset$summary8;
728
+
729
+ return React__default['default'].createElement(SummaryCard, {
730
+ activeSummaryCard: activeSummaryCard,
731
+ title: (asset === null || asset === void 0 ? void 0 : (_asset$summary = asset.summary) === null || _asset$summary === void 0 ? void 0 : _asset$summary.title) || '',
732
+ description: (asset === null || asset === void 0 ? void 0 : (_asset$summary2 = asset.summary) === null || _asset$summary2 === void 0 ? void 0 : _asset$summary2.description) || '',
733
+ instructions: (asset === null || asset === void 0 ? void 0 : (_asset$summary3 = asset.summary) === null || _asset$summary3 === void 0 ? void 0 : _asset$summary3.instructions) || '',
734
+ instructionsType: (asset === null || asset === void 0 ? void 0 : (_asset$summary4 = asset.summary) === null || _asset$summary4 === void 0 ? void 0 : _asset$summary4.instructionsType) || '',
735
+ headerRight: (asset === null || asset === void 0 ? void 0 : (_asset$summary5 = asset.summary) === null || _asset$summary5 === void 0 ? void 0 : _asset$summary5.headerRight) || '',
736
+ headerLeft: React__default['default'].createElement(React__default['default'].Fragment, null, renderSummaryCardHeaderLeft(), (asset === null || asset === void 0 ? void 0 : (_asset$summary6 = asset.summary) === null || _asset$summary6 === void 0 ? void 0 : _asset$summary6.headerLeft) || ''),
737
+ footerLeft: (asset === null || asset === void 0 ? void 0 : (_asset$summary7 = asset.summary) === null || _asset$summary7 === void 0 ? void 0 : _asset$summary7.footerLeft) || '',
738
+ footerRight: (asset === null || asset === void 0 ? void 0 : (_asset$summary8 = asset.summary) === null || _asset$summary8 === void 0 ? void 0 : _asset$summary8.footerRight) || '',
739
+ width: 375
740
+ });
741
+ }, [asset]);
742
+ return React__default['default'].createElement(AssetGalleryWrapper$1, {
743
+ disabled: asset.disabled
744
+ }, React__default['default'].createElement(AssetGalleryCompactCard$2, {
745
+ as: ComputedRootComponent$1,
746
+ component: component,
747
+ disabled: asset.disabled,
748
+ asset: asset,
749
+ onClick: onClick,
750
+ extendedSelectMode: extendedSelectMode,
751
+ onMouseEnter: onMouseEnter,
752
+ onMouseLeave: onMouseLeave,
753
+ draggable: asset.draggable,
754
+ innerRef: dragRef,
755
+ selected: selected
756
+ }, asset.previewUrl && renderPreview(asset), activeSummaryCard ? React__default['default'].createElement(Popover.Popover, {
757
+ content: renderPopoverContent(),
758
+ placement: 'bottom',
759
+ visible: isOverlayHovered && !isAnySubActionsOpened,
760
+ zIndex: 10000
761
+ }, React__default['default'].createElement(Overlay$1, {
762
+ ref: cardRef,
763
+ onMouseEnter: mouseHasEnteredOverlay,
764
+ onMouseLeave: mouseHasLeftOverlay
765
+ }, React__default['default'].createElement(OverlayBackdrop$1, {
766
+ softSelected: softSelected,
767
+ selected: selected
768
+ }), React__default['default'].createElement(OverlayInfoTopActions$1, {
769
+ isOverlayHovered: isOverlayHovered
770
+ }, asset.actions && asset.actions.map(function (action, index) {
771
+ return React__default['default'].createElement(Tooltip.Tooltip, {
772
+ key: "".concat(asset.key, "-").concat(action.title),
773
+ content: React__default['default'].createElement("span", null, action.title)
774
+ }, React__default['default'].createElement(Fragment$1, {
775
+ key: "".concat(asset.key, "-").concat(action.title),
776
+ as: ComputedActionButton$1,
777
+ component: action.component,
778
+ className: action.className,
779
+ icon: action.icon,
780
+ isSubActionsOpened: shouldOpenSubActions(index),
781
+ subActions: action.subActions,
782
+ onClick: function onClick(event) {
783
+ return onActionClick(event, action, index);
784
+ },
785
+ actionButtonWidthHeight: action.actionButtonWidthHeight
786
+ }));
787
+ })), React__default['default'].createElement(OverlayInfo$1, null, React__default['default'].createElement(OverlayInfoTop$1, null, React__default['default'].createElement(OverlayInfoTopLeft, {
788
+ collapseExtraInfo: collapseExtraInfo
789
+ }, displayVersionCount && renderVersionsBadge() || displayVerificationIcon && renderVerificationBadge()), (asset === null || asset === void 0 ? void 0 : (_asset$note = asset.note) === null || _asset$note === void 0 ? void 0 : _asset$note.title) && React__default['default'].createElement(OverlayInfoTopWarning$1, {
790
+ type: asset === null || asset === void 0 ? void 0 : (_asset$note2 = asset.note) === null || _asset$note2 === void 0 ? void 0 : _asset$note2.type
791
+ }, React__default['default'].createElement(warningCircle.SvgWarningCircle, null))), React__default['default'].createElement(OverlayInfoBottom$1, null, selectable && React__default['default'].createElement(OverlayInfoBottomSelectButton$1, {
792
+ selected: selected
793
+ }, React__default['default'].createElement(SvgCheckRectangleFilled, {
794
+ onClick: onSelectClick
795
+ })), React__default['default'].createElement(OverlayInfoBottomMediaIcon$1, null, renderMediaBadge()))), asset.completed && React__default['default'].createElement(OverlayCompleted, {
796
+ softSelected: softSelected
797
+ }), asset.hasError && React__default['default'].createElement(OverlayHasError, {
798
+ softSelected: softSelected
799
+ }), selectable && React__default['default'].createElement(OverlaySelected$1, {
800
+ selected: selected,
801
+ softSelected: softSelected
802
+ }))) : React__default['default'].createElement(Overlay$1, {
803
+ ref: cardRef,
804
+ onMouseEnter: mouseHasEnteredOverlay,
805
+ onMouseLeave: mouseHasLeftOverlay
806
+ }, React__default['default'].createElement(OverlayBackdrop$1, {
807
+ softSelected: softSelected,
808
+ selected: selected
809
+ }), React__default['default'].createElement(OverlayInfoTopActions$1, {
810
+ isOverlayHovered: isOverlayHovered
811
+ }, asset.actions && asset.actions.map(function (action, index) {
812
+ return React__default['default'].createElement(Tooltip.Tooltip, {
813
+ key: "".concat(asset.key, "-").concat(action.title),
814
+ content: React__default['default'].createElement("span", null, action.title)
815
+ }, React__default['default'].createElement(Fragment$1, {
816
+ as: ComputedActionButton$1,
817
+ component: action.component,
818
+ className: action.className,
819
+ icon: action.icon,
820
+ isSubActionsOpened: shouldOpenSubActions(index),
821
+ subActions: action.subActions,
822
+ onClick: function onClick(event) {
823
+ return onActionClick(event, action, index);
824
+ },
825
+ actionButtonWidthHeight: action.actionButtonWidthHeight
826
+ }));
827
+ })), React__default['default'].createElement(OverlayInfo$1, null, isOverlayHovered && React__default['default'].createElement("span", null, asset.title), React__default['default'].createElement(OverlayInfoTop$1, null, React__default['default'].createElement(OverlayInfoTopLeft, {
828
+ collapseExtraInfo: collapseExtraInfo
829
+ }, displayVersionCount && renderVersionsBadge() || displayVerificationIcon && renderVerificationBadge()), (asset === null || asset === void 0 ? void 0 : (_asset$note3 = asset.note) === null || _asset$note3 === void 0 ? void 0 : _asset$note3.title) && React__default['default'].createElement(OverlayInfoTopWarning$1, {
830
+ type: asset === null || asset === void 0 ? void 0 : (_asset$note4 = asset.note) === null || _asset$note4 === void 0 ? void 0 : _asset$note4.type
831
+ }, React__default['default'].createElement(warningCircle.SvgWarningCircle, null))), React__default['default'].createElement(OverlayInfoBottom$1, null, selectable && React__default['default'].createElement(OverlayInfoBottomSelectButton$1, {
832
+ selected: selected
833
+ }, React__default['default'].createElement(SvgCheckRectangleFilled, {
834
+ onClick: onSelectClick
835
+ })), React__default['default'].createElement(OverlayInfoBottomMediaIcon$1, null, renderMediaBadge()))), asset.completed && React__default['default'].createElement(OverlayCompleted, {
836
+ softSelected: softSelected
837
+ }), asset.hasError && React__default['default'].createElement(OverlayHasError, {
838
+ softSelected: softSelected
839
+ }), selectable && React__default['default'].createElement(OverlaySelected$1, {
840
+ selected: selected,
841
+ softSelected: softSelected
842
+ })), asset.overlay && React__default['default'].createElement(ConsumerDefinedOverlay$1, null, asset.overlay)));
843
+ };
844
+
845
+ AssetGalleryCompactCard.propTypes = process.env.NODE_ENV !== "production" ? {
846
+ asset: defaultTheme.PropTypes.shape(assetShapeWithLayout).isRequired,
847
+ hasHeightAndWidth: defaultTheme.PropTypes.bool,
848
+ selectable: defaultTheme.PropTypes.bool,
849
+ selected: defaultTheme.PropTypes.bool,
850
+ extendedSelectMode: defaultTheme.PropTypes.bool,
851
+ onAssetSelected: defaultTheme.PropTypes.func.isRequired,
852
+ onAssetUnselected: defaultTheme.PropTypes.func.isRequired,
853
+ softSelected: defaultTheme.PropTypes.bool.isRequired,
854
+ component: defaultTheme.PropTypes.func,
855
+ scrollPosition: defaultTheme.PropTypes.number,
856
+ collapseExtraInfo: defaultTheme.PropTypes.bool,
857
+ activeSummaryCard: defaultTheme.PropTypes.bool,
858
+ actionButtonWidthHeight: defaultTheme.PropTypes.array
859
+ } : {};
860
+ AssetGalleryCompactCard.defaultProps = {};
861
+ var AssetGalleryCompactCard$1 = reactLazyLoadImageComponent.trackWindowScroll(React__default['default'].memo(AssetGalleryCompactCard, function (prevProps, nextProps) {
862
+ var reactiveProps = ['selectable', 'selected', 'extendedSelectMode', 'softSelected', 'asset.previewUrl', 'asset.overlay', 'hasHeightAndWidth', 'collapseExtraInfo'];
863
+ return reactiveProps.every(function (propKey) {
864
+ return lodash.get(prevProps, propKey) === lodash.get(nextProps, propKey);
865
+ });
866
+ }));
867
+
868
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26;
869
+ var AssetGalleryWrapper = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject || (_templateObject = defaultTheme._taggedTemplateLiteral(["\n ", ";\n"])), function (props) {
870
+ return props.disabled && styled.css(_templateObject2 || (_templateObject2 = defaultTheme._taggedTemplateLiteral(["\n cursor: not-allowed;\n "])));
871
+ });
872
+ var AssetGalleryGridCard$2 = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject3 || (_templateObject3 = defaultTheme._taggedTemplateLiteral(["\n display: block;\n position: relative;\n height: 100%;\n margin: 0;\n box-sizing: border-box;\n border-width: ", "px;\n border-style: solid;\n text-decoration: none;\n cursor: pointer;\n\n ", "\n\n ", ";\n\n ", "\n\n ", ";\n"])), function (props) {
873
+ var selected = props.selected,
874
+ softSelected = props.softSelected,
875
+ hasError = props.hasError,
876
+ completed = props.completed;
877
+ return selected || softSelected || hasError || completed ? 3 : 1;
878
+ }, function (props) {
879
+ return props.theme.themeProp('color', props.theme.getColor('gray-300'), props.theme.getColor('gray-700'));
880
+ }, function (props) {
881
+ return props.disabled && styled.css(_templateObject4 || (_templateObject4 = defaultTheme._taggedTemplateLiteral(["\n pointer-events: none;\n opacity: 0.4;\n "])));
882
+ }, function (props) {
883
+ return props.extendedSelectMode && styled.css(_templateObject5 || (_templateObject5 = defaultTheme._taggedTemplateLiteral(["\n cursor: pointer;\n "])));
884
+ }, function (props) {
885
+ if (props.softSelected) {
886
+ return props.theme.themeProp('border-color', polished.rgba(props.theme.getColor('gray-100'), 0.5), polished.rgba(props.theme.getColor('gray-700'), 0.5));
887
+ }
888
+
889
+ if (props.selected) {
890
+ return props.theme.themeProp('border-color', props.theme.getColor('gray-100'), props.theme.getColor('gray-700'));
891
+ }
892
+
893
+ if (props.completed) {
894
+ return props.theme.themeProp('border-color', props.theme.getColor('emerald-500'), polished.rgba(props.theme.getColor('emerald-500'), 0.7));
895
+ }
896
+
897
+ if (props.hasError) {
898
+ return props.theme.themeProp('border-color', props.theme.getColor('red-600'), polished.rgba(props.theme.getColor('red-500'), 0.7));
899
+ }
900
+
901
+ return props.theme.themeProp('border-color', props.theme.getColor('gray-700'), props.theme.getColor('gray-300'));
902
+ });
903
+ var ContentWrapper = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject6 || (_templateObject6 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n padding: ", "px;\n padding-top: 35px;\n height: 100%;\n"])), function (props) {
904
+ return props.selected || props.softSelected ? 4 : 0;
905
+ });
906
+ var Asset = styled__default['default'].div(_templateObject7 || (_templateObject7 = defaultTheme._taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: flex-start;\n position: relative;\n padding: 0 36px;\n min-height: 200px;\n box-sizing: border-box;\n\n video {\n display: block;\n }\n\n .audio {\n display: flex;\n justify-content: center;\n svg {\n width: 25%;\n }\n }\n"])));
907
+ var Figure = styled__default['default'].figure(_templateObject8 || (_templateObject8 = defaultTheme._taggedTemplateLiteral(["\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n margin: 0;\n\n img,\n video,\n .audio {\n display: block;\n max-height: 200px;\n width: 100%;\n box-sizing: border-box;\n\n ", "\n }\n\n .audio {\n display: flex;\n height: 200px;\n justify-content: center;\n svg {\n width: 25%;\n }\n }\n"])), function (props) {
908
+ return props.hasHeightAndWidth ? styled.css(_templateObject9 || (_templateObject9 = defaultTheme._taggedTemplateLiteral(["\n object-fit: cover;\n "]))) : styled.css(_templateObject10 || (_templateObject10 = defaultTheme._taggedTemplateLiteral(["\n object-fit: contain;\n "])));
909
+ });
910
+ var FigureOverlayBackdrop = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject11 || (_templateObject11 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n inset: 0;\n opacity: ", ";\n background-color: ", ";\n"])), function (props) {
911
+ return props.selected ? 0.6 : 0;
912
+ }, function (props) {
913
+ return props.selected ? '#ACCEF7' : 'transparent';
914
+ });
915
+ var Overlay = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject12 || (_templateObject12 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n"])));
916
+ var OverlayBackdrop = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject13 || (_templateObject13 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n opacity: 0;\n transition: opacity 220ms;\n ", "\n\n ", "\n\n ", ":hover & {\n opacity: 1;\n }\n\n ", ":hover & {\n opacity: 1;\n }\n"])), function (props) {
917
+ return !props.selected ? styled.css(_templateObject14 || (_templateObject14 = defaultTheme._taggedTemplateLiteral(["\n background: radial-gradient(\n ellipse at center,\n rgba(0, 0, 0, 0.3) 27%,\n rgba(0, 0, 0, 0.5) 60%,\n rgba(0, 0, 0, 0.7) 90%\n );\n "]))) : null;
918
+ }, function (props) {
919
+ return (props.selected || props.softSelected) && styled.css(_templateObject15 || (_templateObject15 = defaultTheme._taggedTemplateLiteral(["\n opacity: 1;\n "])));
920
+ }, Overlay, AssetGalleryGridCard$2);
921
+ var OverlayInfo = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject16 || (_templateObject16 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n padding: 15px 12px 10px;\n color: ", ";\n"])), function (props) {
922
+ return props.theme.getColor('gray-100');
923
+ });
924
+ var OverlaySelected = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject17 || (_templateObject17 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n"])));
925
+ var OverlayInfoTop = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject18 || (_templateObject18 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n padding: 8px;\n display: flex;\n"])));
926
+ var OverlayInfoTopVersions = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject19 || (_templateObject19 = defaultTheme._taggedTemplateLiteral(["\n opacity: 1;\n\n ", ":hover & {\n opacity: 0;\n }\n"])), AssetGalleryGridCard$2);
927
+ var OverlayInfoTopWarning = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject20 || (_templateObject20 = defaultTheme._taggedTemplateLiteral(["\n margin-left: auto;\n height: 24px;\n width: 24px;\n border-radius: 50%;\n box-sizing: border-box;\n padding: ", ";\n background-color: ", ";\n opacity: 1;\n\n svg {\n width: 100%;\n color: ", ";\n }\n\n ", ":hover & {\n opacity: 0;\n }\n"])), function (props) {
928
+ return props.type === 'error' ? 0 : '4px';
929
+ }, function (props) {
930
+ return props.type === 'error' ? props.theme.getColor('red-500') : props.theme.getColor('gray-100');
931
+ }, function (props) {
932
+ return props.type === 'error' ? props.theme.getColor('gray-100') : props.theme.getColor('gray-700');
933
+ }, AssetGalleryGridCard$2);
934
+ var OverlayInfoTopActions = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject21 || (_templateObject21 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n right: 0;\n padding: 4px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n transition: opacity 220ms;\n z-index: 99999;\n ", "\n\n opacity: ", ";\n"])), function (props) {
935
+ return props.theme.themeProp('color', props.theme.getColor('gray-300'), props.theme.getColor('gray-700'));
936
+ }, function (props) {
937
+ return props.isCardHovered ? 1 : 0;
938
+ });
939
+ var OverlayInfoBottom = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject22 || (_templateObject22 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n padding: 8px;\n display: flex;\n"])));
940
+ var OverlayInfoBottomSelectButton = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject23 || (_templateObject23 = defaultTheme._taggedTemplateLiteral(["\n opacity: ", ";\n flex-shrink: 0;\n cursor: pointer;\n transition: opacity 220ms;\n\n > svg {\n width: 23px;\n height: 100%;\n transition: opacity 120ms;\n opacity: ", ";\n }\n\n ", ":hover & {\n opacity: 1;\n }\n\n ", ":hover & {\n opacity: 1;\n }\n"])), function (props) {
941
+ return props.selected ? 1 : 0;
942
+ }, function (props) {
943
+ return props.selected ? 1 : 0.5;
944
+ }, Overlay, AssetGalleryGridCard$2);
945
+ var OverlayInfoBottomMediaIcon = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject24 || (_templateObject24 = defaultTheme._taggedTemplateLiteral(["\n margin-left: auto;\n opacity: 1;\n ", ":hover & {\n opacity: 0;\n }\n"])), AssetGalleryGridCard$2);
946
+ var ConsumerDefinedOverlay = styled__default['default'].div.attrs(defaultTheme.applyDefaultTheme)(_templateObject25 || (_templateObject25 = defaultTheme._taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n"])));
947
+ var Fragment = styled__default['default'].div(_templateObject26 || (_templateObject26 = defaultTheme._taggedTemplateLiteral(["\n margin: 4px;\n"])));
948
+
949
+ var ComputedRootComponent = function ComputedRootComponent(_ref) {
950
+ var component = _ref.component,
951
+ asset = _ref.asset,
952
+ props = defaultTheme._objectWithoutProperties(_ref, ["component", "asset"]);
953
+
954
+ var newProps = lodash.mapKeys(lodash.omit(props, ['theme', 'extendedSelectMode']), function (_, key) {
955
+ return key === 'innerRef' ? 'ref' : key;
956
+ });
957
+
958
+ if (component) {
959
+ if (!lodash.isFunction(component)) throw Error('Expected a function in component-prop');
960
+
961
+ if (React__default['default'].isValidElement(component(asset, newProps.children))) {
962
+ return React__default['default'].cloneElement(component(asset, newProps.children), lodash.omit(newProps, ['children']));
963
+ }
964
+ }
965
+
966
+ return React__default['default'].createElement(AssetGalleryGridCard$2, defaultTheme._extends({
967
+ ref: newProps.ref
968
+ }, newProps));
969
+ };
970
+
971
+ var ComputedActionButton = React__default['default'].forwardRef(function ComputedActionButton(_ref2, forwardedRef) {
972
+ var component = _ref2.component,
973
+ className = _ref2.className,
974
+ _ref2$subActions = _ref2.subActions,
975
+ subActions = _ref2$subActions === void 0 ? [] : _ref2$subActions,
976
+ isSubActionsOpened = _ref2.isSubActionsOpened,
977
+ props = defaultTheme._objectWithoutProperties(_ref2, ["component", "className", "subActions", "isSubActionsOpened"]);
978
+
979
+ var newProps = props;
980
+
981
+ if (!lodash.isEmpty(subActions)) {
982
+ var contextMenuItems = subActions.map(function (subAction, key) {
983
+ var onClick = subAction.onClick,
984
+ title = subAction.title,
985
+ icon = subAction.icon;
986
+ return React__default['default'].createElement(ContextMenuItem.ContextMenuItem, {
987
+ key: key,
988
+ onClickEffect: onClick,
989
+ title: title,
990
+ icon: icon
991
+ });
992
+ });
993
+ var contextMenu = React__default['default'].createElement(ContextMenu.ContextMenu, null, contextMenuItems);
994
+ newProps.children = React__default['default'].createElement(Popover.Popover, {
995
+ contextMenu: true,
996
+ content: contextMenu,
997
+ placement: 'bottom-end',
998
+ visible: isSubActionsOpened,
999
+ zIndex: 10001,
1000
+ offset: [0, -8]
1001
+ }, React__default['default'].createElement(ActionButton.ActionButton, {
1002
+ useShadow: true,
1003
+ active: true,
1004
+ ref: forwardedRef,
1005
+ className: className,
1006
+ icon: newProps.icon,
1007
+ backgroundColors: ['black', 'white'],
1008
+ onClick: newProps.onClick,
1009
+ buttonWidthHeight: newProps.actionButtonWidthHeight
1010
+ }));
1011
+ } else {
1012
+ newProps.children = React__default['default'].createElement(ActionButton.ActionButton, {
1013
+ useShadow: true,
1014
+ active: true,
1015
+ ref: forwardedRef,
1016
+ className: className,
1017
+ icon: newProps.icon,
1018
+ onClick: newProps.onClick,
1019
+ backgroundColors: ['black', 'white'],
1020
+ buttonWidthHeight: newProps.actionButtonWidthHeight
1021
+ });
1022
+ }
1023
+
1024
+ if (component) {
1025
+ if (!lodash.isFunction(component)) throw Error('Expected a function in component-prop');
1026
+
1027
+ if (React__default['default'].isValidElement(component())) {
1028
+ return React__default['default'].cloneElement(component(), defaultTheme._objectSpread2({}, lodash.omit(newProps, 'icon')));
1029
+ }
1030
+ }
1031
+
1032
+ return React__default['default'].createElement(React__default['default'].Fragment, null, newProps.children);
1033
+ });
1034
+
1035
+ var AssetGalleryGridCard = function AssetGalleryGridCard(props) {
1036
+ var asset = props.asset,
1037
+ selectable = props.selectable,
1038
+ selected = props.selected,
1039
+ extendedSelectMode = props.extendedSelectMode,
1040
+ onAssetSelected = props.onAssetSelected,
1041
+ onAssetUnselected = props.onAssetUnselected,
1042
+ softSelected = props.softSelected,
1043
+ component = props.component,
1044
+ scrollPosition = props.scrollPosition;
1045
+
1046
+ var _React$useState = React__default['default'].useState(false),
1047
+ _React$useState2 = defaultTheme._slicedToArray(_React$useState, 2),
1048
+ isCardHovered = _React$useState2[0],
1049
+ setIsCardHovered = _React$useState2[1];
1050
+
1051
+ var _React$useState3 = React__default['default'].useState([]),
1052
+ _React$useState4 = defaultTheme._slicedToArray(_React$useState3, 2),
1053
+ openedSubActions = _React$useState4[0],
1054
+ updateOpenedSubActions = _React$useState4[1];
1055
+
1056
+ React.useEffect(function () {
1057
+ var _asset$actions;
1058
+
1059
+ var newOpenedSubActions = ((_asset$actions = asset === null || asset === void 0 ? void 0 : asset.actions) !== null && _asset$actions !== void 0 ? _asset$actions : []).map(function () {
1060
+ return false;
1061
+ });
1062
+ updateOpenedSubActions(newOpenedSubActions);
1063
+ }, [asset]);
1064
+ React.useEffect(function () {
1065
+ if (!isCardHovered && openedSubActions !== null && openedSubActions !== void 0 && openedSubActions.length) {
1066
+ updateOpenedSubActions(openedSubActions.map(function () {
1067
+ return false;
1068
+ }));
1069
+ }
1070
+ }, [isCardHovered]);
1071
+ var mouseHasEnteredCard = React.useCallback(function () {
1072
+ setIsCardHovered(true);
1073
+ }, []);
1074
+ var mouseHasLeftCard = React.useCallback(function () {
1075
+ setIsCardHovered(false);
1076
+ }, []);
1077
+ var onSubActionsViewToggle = React.useCallback(function (actionIndex) {
1078
+ var newOpenedSubActions = openedSubActions.map(function (isOpened, index) {
1079
+ if (index !== actionIndex) {
1080
+ return false;
1081
+ }
1082
+
1083
+ return !isOpened;
1084
+ });
1085
+ updateOpenedSubActions(newOpenedSubActions);
1086
+ }, [openedSubActions]);
1087
+ var videoPlayerRef = React.useRef();
1088
+ var cardRef = React.useRef();
1089
+ var dragRef = React.useRef(null);
1090
+
1091
+ function onMouseEnter(event) {
1092
+ if (videoPlayerRef.current) {
1093
+ var playPromise = videoPlayerRef.current.play();
1094
+
1095
+ if (playPromise !== undefined) {
1096
+ playPromise.then(function () {})["catch"](function () {});
1097
+ }
1098
+ }
1099
+
1100
+ if (lodash.isFunction(asset.onMouseEnter)) {
1101
+ asset.onMouseEnter(event, asset);
1102
+ }
1103
+
1104
+ mouseHasEnteredCard();
1105
+ }
1106
+
1107
+ function onMouseLeave() {
1108
+ if (videoPlayerRef.current) {
1109
+ videoPlayerRef.current.pause();
1110
+ }
1111
+
1112
+ mouseHasLeftCard();
1113
+ }
1114
+
1115
+ function onClick(event) {
1116
+ if (extendedSelectMode) {
1117
+ return onSelectClick(event);
1118
+ }
1119
+
1120
+ if (lodash.isFunction(asset.onClick)) {
1121
+ asset.onClick(event, asset);
1122
+ }
1123
+ }
1124
+
1125
+ function onSelectClick(event) {
1126
+ event.preventDefault();
1127
+ event.stopPropagation();
1128
+
1129
+ if (selected) {
1130
+ return onAssetUnselected(asset.key);
1131
+ }
1132
+
1133
+ return onAssetSelected(asset.key);
1134
+ }
1135
+
1136
+ var onActionClick = React.useCallback(function (event, action, index) {
1137
+ event.preventDefault();
1138
+ event.stopPropagation();
1139
+
1140
+ if (lodash.isFunction(action === null || action === void 0 ? void 0 : action.onClick)) {
1141
+ action.onClick(asset);
1142
+ }
1143
+
1144
+ if (!lodash.isEmpty(action === null || action === void 0 ? void 0 : action.subActions)) {
1145
+ onSubActionsViewToggle(index);
1146
+ }
1147
+ }, [onSubActionsViewToggle]);
1148
+ var shouldOpenSubActions = React.useCallback(function (actionIndex) {
1149
+ return openedSubActions[actionIndex];
1150
+ }, [openedSubActions]);
1151
+
1152
+ function onContextMenu(event) {
1153
+ event.preventDefault();
1154
+ asset.onContextMenu(event);
1155
+ }
1156
+
1157
+ function renderPreview(asset) {
1158
+ var _asset$fileType, _asset$fileType2, _asset$note, _asset$note2;
1159
+
1160
+ var previewContent = null;
1161
+
1162
+ if (((_asset$fileType = asset.fileType) === null || _asset$fileType === void 0 ? void 0 : _asset$fileType.toLowerCase()) === 'video') {
1163
+ previewContent = React__default['default'].createElement(reactLazyLoadImageComponent.LazyLoadComponent, {
1164
+ scrollPosition: scrollPosition
1165
+ }, React__default['default'].createElement("video", {
1166
+ ref: videoPlayerRef,
1167
+ loop: true,
1168
+ muted: true
1169
+ }, React__default['default'].createElement("source", {
1170
+ src: asset.previewUrl,
1171
+ type: "video/mp4"
1172
+ })));
1173
+ } else if (((_asset$fileType2 = asset.fileType) === null || _asset$fileType2 === void 0 ? void 0 : _asset$fileType2.toLowerCase()) === 'audio') {
1174
+ previewContent = React__default['default'].createElement(reactLazyLoadImageComponent.LazyLoadComponent, {
1175
+ scrollPosition: scrollPosition
1176
+ }, React__default['default'].createElement("div", {
1177
+ className: "audio"
1178
+ }, React__default['default'].createElement(SvgHeadset, null)));
1179
+ } else {
1180
+ previewContent = React__default['default'].createElement(reactLazyLoadImageComponent.LazyLoadImage, {
1181
+ alt: asset.title,
1182
+ src: asset.previewUrl,
1183
+ height: "100%",
1184
+ width: "100%",
1185
+ delayMethod: "debounce",
1186
+ delayTime: 0,
1187
+ threshold: 1500,
1188
+ scrollPosition: scrollPosition
1189
+ });
1190
+ }
1191
+
1192
+ return React__default['default'].createElement(Figure, {
1193
+ selected: selected
1194
+ }, previewContent, React__default['default'].createElement(FigureOverlayBackdrop, {
1195
+ selected: selected
1196
+ }), React__default['default'].createElement(Overlay, {
1197
+ ref: cardRef
1198
+ }, React__default['default'].createElement(OverlayBackdrop, {
1199
+ $softSelected: softSelected,
1200
+ selected: selected
1201
+ }), React__default['default'].createElement(OverlayInfo, null, React__default['default'].createElement(OverlayInfoTop, null, React__default['default'].createElement(OverlayInfoTopVersions, null, renderVersionsBadge()), (asset === null || asset === void 0 ? void 0 : (_asset$note = asset.note) === null || _asset$note === void 0 ? void 0 : _asset$note.title) && React__default['default'].createElement(OverlayInfoTopWarning, {
1202
+ type: asset === null || asset === void 0 ? void 0 : (_asset$note2 = asset.note) === null || _asset$note2 === void 0 ? void 0 : _asset$note2.type
1203
+ }, React__default['default'].createElement(warningCircle.SvgWarningCircle, null)), React__default['default'].createElement(OverlayInfoTopActions, {
1204
+ isCardHovered: isCardHovered
1205
+ }, asset.actions && asset.actions.map(function (action, index) {
1206
+ return React__default['default'].createElement(Tooltip.Tooltip, {
1207
+ key: "".concat(asset.key, "-").concat(action.title),
1208
+ content: action.title
1209
+ }, React__default['default'].createElement(Fragment, {
1210
+ key: "".concat(asset.key, "-").concat(action.title),
1211
+ as: ComputedActionButton,
1212
+ component: action.component,
1213
+ className: action.className,
1214
+ icon: action.icon,
1215
+ isCardHovered: isCardHovered,
1216
+ isSubActionsOpened: shouldOpenSubActions(index),
1217
+ onClick: function onClick(event) {
1218
+ return onActionClick(event, action, index);
1219
+ },
1220
+ subActions: action === null || action === void 0 ? void 0 : action.subActions,
1221
+ actionButtonWidthHeight: action.actionButtonWidthHeight
1222
+ }));
1223
+ }))), React__default['default'].createElement(OverlayInfoBottom, null, selectable && React__default['default'].createElement(OverlayInfoBottomSelectButton, {
1224
+ selected: selected
1225
+ }, React__default['default'].createElement(SvgCheckRectangleFilled, {
1226
+ onClick: onSelectClick
1227
+ })), React__default['default'].createElement(OverlayInfoBottomMediaIcon, null, renderMediaBadge()))), selectable && React__default['default'].createElement(OverlaySelected, {
1228
+ selected: selected,
1229
+ $softSelected: softSelected
1230
+ })), asset.overlay && React__default['default'].createElement(ConsumerDefinedOverlay, null, asset.overlay));
1231
+ }
1232
+
1233
+ React.useEffect(function () {
1234
+ if (lodash.isFunction(asset.onContextMenu)) {
1235
+ if (cardRef.current) {
1236
+ cardRef.current.addEventListener('contextmenu', onContextMenu);
1237
+ }
1238
+
1239
+ return function () {
1240
+ if (cardRef.current) {
1241
+ cardRef.current.removeEventListener('contextmenu', onContextMenu);
1242
+ }
1243
+ };
1244
+ }
1245
+ }, []);
1246
+
1247
+ function onDragstart(event) {
1248
+ asset.onDragstart(event);
1249
+ }
1250
+
1251
+ React.useEffect(function () {
1252
+ if (lodash.isFunction(asset.onDragstart)) {
1253
+ if (dragRef.current) {
1254
+ dragRef.current.addEventListener('dragstart', onDragstart);
1255
+ }
1256
+
1257
+ return function () {
1258
+ if (dragRef.current) {
1259
+ dragRef.current.removeEventListener('dragstart', onDragstart);
1260
+ }
1261
+ };
1262
+ }
1263
+ }, []);
1264
+ React.useEffect(function () {
1265
+ if (softSelected) {
1266
+ cardRef.current.scrollIntoView({
1267
+ behavior: 'smooth',
1268
+ block: 'nearest'
1269
+ });
1270
+ }
1271
+ }, [softSelected]);
1272
+ var renderVersionsBadge = React.useCallback(function () {
1273
+ if (!(asset !== null && asset !== void 0 && asset.versions)) return null;
1274
+ return React__default['default'].createElement(Badge.Badge, {
1275
+ badgeIcon: React__default['default'].createElement(SvgLayers, null),
1276
+ badgeContent: asset.versions,
1277
+ backgroundColors: ['black', 'black'],
1278
+ colors: ['#f7f8f9', '#f7f8f9'],
1279
+ fontSize: 12,
1280
+ fontWeight: 500,
1281
+ lineHeight: 16,
1282
+ verticalPadding: 4,
1283
+ horizontalPadding: 8
1284
+ });
1285
+ }, [asset]);
1286
+ var renderMediaBadge = React.useCallback(function () {
1287
+ var badgeIcon = null;
1288
+ var badgeContent = null;
1289
+
1290
+ if ((asset === null || asset === void 0 ? void 0 : asset.fileType) === 'video') {
1291
+ badgeIcon = React__default['default'].createElement(SvgPlay, null);
1292
+ }
1293
+
1294
+ if (asset !== null && asset !== void 0 && asset.duration) {
1295
+ badgeContent = convertMsToHMS(asset.duration);
1296
+ }
1297
+
1298
+ if (!badgeIcon && !badgeContent) return null;
1299
+ return React__default['default'].createElement(Badge.Badge, {
1300
+ badgeIcon: badgeIcon,
1301
+ badgeContent: badgeContent,
1302
+ backgroundColors: ['black', 'black'],
1303
+ colors: ['#f7f8f9', '#f7f8f9'],
1304
+ fontSize: 12,
1305
+ fontWeight: 500,
1306
+ lineHeight: 16,
1307
+ verticalPadding: 4,
1308
+ horizontalPadding: 8,
1309
+ minWidth: 32,
1310
+ height: 24
1311
+ });
1312
+ }, [asset]);
1313
+ var renderSummary = React.useCallback(function () {
1314
+ var _asset$summary, _asset$summary2, _asset$summary3, _asset$summary4, _asset$summary5, _asset$summary6;
1315
+
1316
+ return React__default['default'].createElement(SummaryCard, {
1317
+ activeSummaryCard: true,
1318
+ title: (asset === null || asset === void 0 ? void 0 : (_asset$summary = asset.summary) === null || _asset$summary === void 0 ? void 0 : _asset$summary.title) || '',
1319
+ description: (asset === null || asset === void 0 ? void 0 : (_asset$summary2 = asset.summary) === null || _asset$summary2 === void 0 ? void 0 : _asset$summary2.description) || '',
1320
+ instructions: (asset === null || asset === void 0 ? void 0 : (_asset$summary3 = asset.summary) === null || _asset$summary3 === void 0 ? void 0 : _asset$summary3.instructions) || '',
1321
+ instructionsType: (asset === null || asset === void 0 ? void 0 : (_asset$summary4 = asset.summary) === null || _asset$summary4 === void 0 ? void 0 : _asset$summary4.instructionsType) || '',
1322
+ footerLeft: (asset === null || asset === void 0 ? void 0 : (_asset$summary5 = asset.summary) === null || _asset$summary5 === void 0 ? void 0 : _asset$summary5.footerLeft) || '',
1323
+ footerRight: (asset === null || asset === void 0 ? void 0 : (_asset$summary6 = asset.summary) === null || _asset$summary6 === void 0 ? void 0 : _asset$summary6.footerRight) || ''
1324
+ });
1325
+ }, [asset]);
1326
+ return React__default['default'].createElement(AssetGalleryWrapper, {
1327
+ disabled: asset.disabled
1328
+ }, React__default['default'].createElement(AssetGalleryGridCard$2, {
1329
+ as: ComputedRootComponent,
1330
+ component: component,
1331
+ asset: asset,
1332
+ disabled: asset.disabled,
1333
+ onClick: onClick,
1334
+ extendedSelectMode: extendedSelectMode,
1335
+ onMouseEnter: onMouseEnter,
1336
+ onMouseLeave: onMouseLeave,
1337
+ draggable: asset.draggable,
1338
+ innerRef: dragRef,
1339
+ selected: selected,
1340
+ $softSelected: softSelected,
1341
+ completed: asset === null || asset === void 0 ? void 0 : asset.completed,
1342
+ $hasError: asset === null || asset === void 0 ? void 0 : asset.hasError
1343
+ }, React__default['default'].createElement(ContentWrapper, {
1344
+ layout: asset.layout,
1345
+ ref: cardRef,
1346
+ $softSelected: softSelected,
1347
+ selected: selected
1348
+ }, React__default['default'].createElement(Asset, {
1349
+ "data-id": "ss",
1350
+ selected: selected
1351
+ }, asset.previewUrl && renderPreview(asset)), renderSummary())));
1352
+ };
1353
+
1354
+ AssetGalleryGridCard.propTypes = process.env.NODE_ENV !== "production" ? {
1355
+ asset: defaultTheme.PropTypes.shape(assetShapeWithLayout).isRequired,
1356
+ selectable: defaultTheme.PropTypes.bool,
1357
+ selected: defaultTheme.PropTypes.bool,
1358
+ extendedSelectMode: defaultTheme.PropTypes.bool,
1359
+ onAssetSelected: defaultTheme.PropTypes.func.isRequired,
1360
+ onAssetUnselected: defaultTheme.PropTypes.func.isRequired,
1361
+ softSelected: defaultTheme.PropTypes.bool.isRequired,
1362
+ component: defaultTheme.PropTypes.func,
1363
+ scrollPosition: defaultTheme.PropTypes.number
1364
+ } : {};
1365
+ AssetGalleryGridCard.defaultProps = {};
1366
+ var AssetGalleryGridCard$1 = reactLazyLoadImageComponent.trackWindowScroll(React__default['default'].memo(AssetGalleryGridCard, function (prevProps, nextProps) {
1367
+ var reactiveProps = ['selectable', 'selected', 'extendedSelectMode', 'softSelected', 'asset.previewUrl', 'asset.overlay', 'asset.layout'];
1368
+ return reactiveProps.every(function (propKey) {
1369
+ return lodash.get(prevProps, propKey) === lodash.get(nextProps, propKey);
1370
+ });
1371
+ }));
1372
+
1373
+ var AssetGalleryBase = React__default['default'].forwardRef(function AssetGalleryBase(_ref, forwardedRef) {
1374
+ var assetsProp = _ref.assets,
1375
+ activeSummaryCard = _ref.activeSummaryCard,
1376
+ displayVersionCount = _ref.displayVersionCount,
1377
+ displayVerificationIcon = _ref.displayVerificationIcon,
1378
+ viewMode = _ref.viewMode,
1379
+ thumbnailMaxHeight = _ref.thumbnailMaxHeight,
1380
+ selectable = _ref.selectable,
1381
+ selectedAssetKeys = _ref.selectedAssetKeys,
1382
+ onAssetSelected = _ref.onAssetSelected,
1383
+ onAssetUnselected = _ref.onAssetUnselected,
1384
+ softSelectable = _ref.softSelectable,
1385
+ softSelectedAssetKey = _ref.softSelectedAssetKey,
1386
+ scrollElementProp = _ref.scrollElement,
1387
+ onAssetSoftSelectedChanged = _ref.onAssetSoftSelectedChanged,
1388
+ component = _ref.component,
1389
+ props = defaultTheme._objectWithoutProperties(_ref, ["assets", "activeSummaryCard", "displayVersionCount", "displayVerificationIcon", "viewMode", "thumbnailMaxHeight", "selectable", "selectedAssetKeys", "onAssetSelected", "onAssetUnselected", "softSelectable", "softSelectedAssetKey", "scrollElement", "onAssetSoftSelectedChanged", "component"]);
1390
+
1391
+ var assetGalleryDOMNode = React.useRef();
1392
+ var assetGalleryCompactRef = useMergedRefs.useMergedRefs(forwardedRef, assetGalleryDOMNode);
1393
+ var assetGalleryWidth = React.useRef(0);
1394
+ var minimumRowAspectRatio = React.useRef(0);
1395
+ var calculatedAssets = React.useRef([]);
1396
+
1397
+ var _useState = React.useState([]),
1398
+ _useState2 = defaultTheme._slicedToArray(_useState, 2),
1399
+ assets = _useState2[0],
1400
+ setAssets = _useState2[1];
1401
+
1402
+ var MAXIMUM_ROW_HEIGHT = React.useMemo(function () {
1403
+ return viewMode === 'grid' ? 450 : thumbnailMaxHeight;
1404
+ }, [viewMode, thumbnailMaxHeight]);
1405
+ var SPACE_BETWEEN_ASSETS = 8;
1406
+ var SPACE_UNDER_ASSETS = 8;
1407
+ var PRIMARY_SCROLL_BUFFER_HEIGHT = 1500;
1408
+ var SECONDARY_SCROLL_BUFFER_HEIGHT = 500;
1409
+ var GRID_VIEW_MODE_ASSET_MIN_WIDTH = 300;
1410
+ var GRID_VIEW_MODE_ASSET_HEIGHT = 427;
1411
+ var MISSING_WIDTH_PLACEHOLDER = 1920;
1412
+ var MISSING_HEIGHT_PLACEHOLDER = 1080;
1413
+ var isBrowser = typeof window !== 'undefined';
1414
+ var scrollElement = scrollElementProp || window;
1415
+ var previousYOffset = React.useRef(isBrowser ? scrollElement.pageYOffset : 0);
1416
+ var latestYOffset = React.useRef(isBrowser ? scrollElement.pageYOffset : 0);
1417
+ var scrollDirection = React.useRef('down');
1418
+ MultiLevelCheckboxSelect.useIsomorphicLayoutEffect(function () {
1419
+ if (!assetGalleryDOMNode.current) return;
1420
+ var throttledOnResize = lodash.throttle(onResize, 1);
1421
+ var resizeObserver = new ResizeObserver__default['default'](throttledOnResize);
1422
+ resizeObserver.observe(assetGalleryDOMNode.current);
1423
+
1424
+ function onResize(entries) {
1425
+ entries.forEach(function (entry) {
1426
+ if (assetGalleryWidth.current === entry.contentRect.width) return;
1427
+ window.requestAnimationFrame(function () {
1428
+ assetGalleryWidth.current = entry.contentRect.width;
1429
+ main();
1430
+ });
1431
+ });
1432
+ }
1433
+
1434
+ return function () {
1435
+ resizeObserver.unobserve(assetGalleryDOMNode.current);
1436
+ };
1437
+ }, [assetsProp, assetGalleryDOMNode, MAXIMUM_ROW_HEIGHT]);
1438
+ React.useEffect(function () {
1439
+ main();
1440
+ }, [MAXIMUM_ROW_HEIGHT, assetsProp]);
1441
+
1442
+ var main = function main() {
1443
+ calculateAssetGalleryAspectRatio();
1444
+ calculateLayout();
1445
+ calculateVisibility();
1446
+ };
1447
+
1448
+ var calculateAssetGalleryAspectRatio = function calculateAssetGalleryAspectRatio() {
1449
+ if (assetGalleryWidth.current > 0) {
1450
+ minimumRowAspectRatio.current = calculateAspectRatio(assetGalleryWidth.current, MAXIMUM_ROW_HEIGHT);
1451
+ }
1452
+ };
1453
+
1454
+ var calculateLayout = function calculateLayout() {
1455
+ var assetsWithoutAKey = assetsProp.filter(function (a) {
1456
+ return !a.key;
1457
+ });
1458
+
1459
+ if (assetsWithoutAKey.length > 0) {
1460
+ assetsProp = assetsProp.filter(function (a) {
1461
+ return a.key;
1462
+ });
1463
+ assetsWithoutAKey.forEach(function (a) {
1464
+ return console.warn('Omitted asset from the gallery because it was missing the unique `key` property.', a);
1465
+ });
1466
+ }
1467
+
1468
+ if (viewMode === 'grid' && assetGalleryWidth.current > 0) {
1469
+ var row = [];
1470
+ var translateX = 0;
1471
+ var translateY = 0;
1472
+ var computedAssets = [];
1473
+ var lastGroup = null;
1474
+ var desiredAssetCountInRow = Math.floor(assetGalleryWidth.current / GRID_VIEW_MODE_ASSET_MIN_WIDTH) || 1;
1475
+ var desiredAssetWidth = assetGalleryWidth.current / desiredAssetCountInRow - SPACE_BETWEEN_ASSETS + SPACE_BETWEEN_ASSETS / desiredAssetCountInRow;
1476
+ assetsProp.forEach(function (asset, index) {
1477
+ var _assetsProp;
1478
+
1479
+ if (asset.group && asset.group !== lastGroup) {
1480
+ computedAssets.push({
1481
+ title: asset.group,
1482
+ key: asset.key,
1483
+ layout: {
1484
+ type: 'groupLabel',
1485
+ height: 50,
1486
+ translateX: Math.round(translateX),
1487
+ translateY: Math.round(translateY)
1488
+ }
1489
+ });
1490
+ lastGroup = asset.group;
1491
+ translateY += 50 + SPACE_UNDER_ASSETS;
1492
+ }
1493
+
1494
+ row.push(asset);
1495
+
1496
+ if (row.length === desiredAssetCountInRow || index + 1 === assetsProp.length || (_assetsProp = assetsProp[index + 1]) !== null && _assetsProp !== void 0 && _assetsProp.group && assetsProp[index + 1].group !== asset.group) {
1497
+ row.forEach(function (rowAsset) {
1498
+ computedAssets.push(defaultTheme._objectSpread2(defaultTheme._objectSpread2({}, rowAsset), {}, {
1499
+ layout: {
1500
+ type: 'asset',
1501
+ width: Math.round(desiredAssetWidth),
1502
+ height: Math.round(GRID_VIEW_MODE_ASSET_HEIGHT),
1503
+ translateX: Math.round(translateX),
1504
+ translateY: Math.round(translateY)
1505
+ }
1506
+ }));
1507
+ translateX += desiredAssetWidth + SPACE_BETWEEN_ASSETS;
1508
+ });
1509
+ row = [];
1510
+ translateX = 0;
1511
+ translateY += GRID_VIEW_MODE_ASSET_HEIGHT + SPACE_UNDER_ASSETS;
1512
+ }
1513
+ });
1514
+ calculatedAssets.current = computedAssets;
1515
+ } else {
1516
+ if (minimumRowAspectRatio.current > 0) {
1517
+ var _row = [];
1518
+ var _translateX = 0;
1519
+ var _translateY = 0;
1520
+ var rowAspectRatio = 0;
1521
+ var _lastGroup = null;
1522
+ var _computedAssets = [];
1523
+ assetsProp.forEach(function (asset, index) {
1524
+ var _assetsProp2;
1525
+
1526
+ if (asset.group && asset.group !== _lastGroup) {
1527
+ _computedAssets.push({
1528
+ title: asset.group,
1529
+ key: asset.key,
1530
+ layout: {
1531
+ type: 'groupLabel',
1532
+ height: 50,
1533
+ translateX: Math.round(_translateX),
1534
+ translateY: Math.round(_translateY)
1535
+ }
1536
+ });
1537
+
1538
+ _lastGroup = asset.group;
1539
+ _translateY += 50 + SPACE_UNDER_ASSETS;
1540
+ }
1541
+
1542
+ rowAspectRatio += calculateAspectRatio(asset.width || MISSING_WIDTH_PLACEHOLDER, asset.height || MISSING_HEIGHT_PLACEHOLDER);
1543
+
1544
+ _row.push(asset);
1545
+
1546
+ if (rowAspectRatio >= minimumRowAspectRatio.current || index + 1 === assetsProp.length || (_assetsProp2 = assetsProp[index + 1]) !== null && _assetsProp2 !== void 0 && _assetsProp2.group && assetsProp[index + 1].group !== asset.group) {
1547
+ rowAspectRatio = Math.max(rowAspectRatio, minimumRowAspectRatio.current);
1548
+ var totalDesiredWidthOfImages = assetGalleryWidth.current - SPACE_BETWEEN_ASSETS * (_row.length - 1);
1549
+ var rowHeight = totalDesiredWidthOfImages / rowAspectRatio;
1550
+
1551
+ _row.forEach(function (rowAsset) {
1552
+ var assetWidth = rowHeight * calculateAspectRatio(rowAsset.width || MISSING_WIDTH_PLACEHOLDER, rowAsset.height || MISSING_HEIGHT_PLACEHOLDER);
1553
+
1554
+ _computedAssets.push(defaultTheme._objectSpread2(defaultTheme._objectSpread2({}, rowAsset), {}, {
1555
+ layout: {
1556
+ type: 'asset',
1557
+ width: Math.round(assetWidth),
1558
+ height: Math.round(rowHeight),
1559
+ translateX: Math.round(_translateX),
1560
+ translateY: Math.round(_translateY),
1561
+ hasHeightAndWidth: Boolean(rowAsset.width && rowAsset.height)
1562
+ }
1563
+ }));
1564
+
1565
+ _translateX += assetWidth + SPACE_BETWEEN_ASSETS;
1566
+ });
1567
+
1568
+ _row = [];
1569
+ rowAspectRatio = 0;
1570
+ _translateY += rowHeight + SPACE_UNDER_ASSETS;
1571
+ _translateX = 0;
1572
+ }
1573
+ });
1574
+ calculatedAssets.current = _computedAssets;
1575
+ }
1576
+ }
1577
+ };
1578
+
1579
+ function calculateAspectRatio(width, height) {
1580
+ return width / height;
1581
+ }
1582
+
1583
+ var totalGalleryHeight = React.useMemo(function () {
1584
+ if (assets.length === 0) {
1585
+ return 0;
1586
+ }
1587
+
1588
+ var lastAsset = assets[assets.length - 1];
1589
+ return lastAsset.layout.translateY + lastAsset.layout.height;
1590
+ }, [assets]);
1591
+ React.useEffect(function () {
1592
+ var throttledOnScroll = lodash.throttle(onScroll, 200);
1593
+ scrollElement.addEventListener('scroll', throttledOnScroll, false);
1594
+ return function () {
1595
+ return scrollElement.removeEventListener('scroll', throttledOnScroll, false);
1596
+ };
1597
+ }, [assetGalleryDOMNode, calculatedAssets]);
1598
+
1599
+ function onScroll() {
1600
+ setScrollPositionAndDirection();
1601
+ calculateVisibility();
1602
+ }
1603
+
1604
+ function setScrollPositionAndDirection() {
1605
+ var newYOffset = scrollElement.pageYOffset;
1606
+ previousYOffset.current = latestYOffset.current;
1607
+ latestYOffset.current = newYOffset;
1608
+ scrollDirection.current = latestYOffset.current > previousYOffset.current ? 'down' : 'up';
1609
+ }
1610
+
1611
+ var calculateVisibility = function calculateVisibility() {
1612
+ if (!assetGalleryDOMNode.current) return;
1613
+ var bufferTop = scrollDirection.current === 'up' ? PRIMARY_SCROLL_BUFFER_HEIGHT : SECONDARY_SCROLL_BUFFER_HEIGHT;
1614
+ var bufferBottom = scrollDirection.current === 'up' ? SECONDARY_SCROLL_BUFFER_HEIGHT : PRIMARY_SCROLL_BUFFER_HEIGHT;
1615
+ var containerOffset = getOffsetTop(assetGalleryDOMNode.current);
1616
+ var scrollerHeight = scrollElement.innerHeight;
1617
+ var yOffset = latestYOffset.current;
1618
+ var minTranslateYPlusHeight = yOffset - containerOffset - bufferTop;
1619
+ var maxTranslateY = yOffset - containerOffset + scrollerHeight + bufferBottom;
1620
+ var finalizedAssets = calculatedAssets.current.map(function (asset) {
1621
+ if (scrollElement.self == window && (asset.layout.translateY + asset.layout.height < minTranslateYPlusHeight || asset.layout.translateY > maxTranslateY)) {
1622
+ asset.layout.show = false;
1623
+ } else {
1624
+ asset.layout.show = true;
1625
+ }
1626
+
1627
+ return asset;
1628
+ });
1629
+ setAssets(finalizedAssets);
1630
+ };
1631
+
1632
+ function getOffsetTop(elem) {
1633
+ var offsetTop = 0;
1634
+
1635
+ do {
1636
+ if (!isNaN(elem.offsetTop)) {
1637
+ offsetTop += elem.offsetTop;
1638
+ }
1639
+
1640
+ elem = elem.offsetParent;
1641
+ } while (elem);
1642
+
1643
+ return offsetTop;
1644
+ }
1645
+
1646
+ var handleKeyPress = React.useCallback(function (e) {
1647
+ function isElementVisible(el) {
1648
+ var rect = el.getBoundingClientRect(),
1649
+ vWidth = scrollElement.innerWidth || document.documentElement.clientWidth,
1650
+ vHeight = scrollElement.innerHeight || document.documentElement.clientHeight,
1651
+ efp = function efp(x, y) {
1652
+ return document.elementFromPoint(x, y);
1653
+ };
1654
+
1655
+ if (rect.right < 0 || rect.bottom < 0 || rect.left > vWidth || rect.top > vHeight) return false;
1656
+ return el.contains(efp(rect.left, rect.top)) || el.contains(efp(rect.right, rect.top)) || el.contains(efp(rect.right, rect.bottom)) || el.contains(efp(rect.left, rect.bottom));
1657
+ }
1658
+
1659
+ function softSelectFirstVisibleAsset() {
1660
+ var visibleAssets = assets.filter(function (asset) {
1661
+ return asset.layout.show;
1662
+ });
1663
+
1664
+ for (var i = 0; i < assetGalleryDOMNode.current.children.length; i++) {
1665
+ if (isElementVisible(assetGalleryDOMNode.current.children[i])) {
1666
+ onAssetSoftSelectedChanged(visibleAssets[i].key);
1667
+ break;
1668
+ }
1669
+ }
1670
+ }
1671
+
1672
+ if (assets.length === 0) return;
1673
+
1674
+ if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {
1675
+ if (softSelectedAssetKey === null) {
1676
+ softSelectFirstVisibleAsset();
1677
+ return;
1678
+ }
1679
+ }
1680
+
1681
+ if (e.key === 'ArrowLeft') {
1682
+ var previousAssetIndex = assets.findIndex(function (asset) {
1683
+ return asset.key === softSelectedAssetKey;
1684
+ }) - 1;
1685
+ var previousAsset = assets[previousAssetIndex];
1686
+
1687
+ if (previousAsset) {
1688
+ if (previousAsset.layout.show) {
1689
+ onAssetSoftSelectedChanged(previousAsset.key);
1690
+ } else {
1691
+ softSelectFirstVisibleAsset();
1692
+ }
1693
+ }
1694
+
1695
+ return;
1696
+ }
1697
+
1698
+ if (e.key === 'ArrowRight') {
1699
+ var nextAssetIndex = assets.findIndex(function (asset) {
1700
+ return asset.key === softSelectedAssetKey;
1701
+ }) + 1;
1702
+ var nextAsset = assets[nextAssetIndex];
1703
+
1704
+ if (nextAsset) {
1705
+ if (nextAsset.layout.show) {
1706
+ onAssetSoftSelectedChanged(nextAsset.key);
1707
+ } else {
1708
+ softSelectFirstVisibleAsset();
1709
+ }
1710
+ }
1711
+
1712
+ return;
1713
+ }
1714
+
1715
+ if (e.key === 'Enter') {
1716
+ if (softSelectedAssetKey === null) return;
1717
+
1718
+ if (selectedAssetKeys.includes(softSelectedAssetKey)) {
1719
+ onAssetUnselected(softSelectedAssetKey);
1720
+ } else {
1721
+ onAssetSelected(softSelectedAssetKey);
1722
+ }
1723
+ }
1724
+ }, [assets, softSelectedAssetKey, onAssetSoftSelectedChanged, selectedAssetKeys, assetGalleryCompactRef]);
1725
+ var handleClick = React.useCallback(function () {
1726
+ onAssetSoftSelectedChanged(null);
1727
+ }, []);
1728
+ React.useEffect(function () {
1729
+ if (softSelectable) {
1730
+ document.addEventListener('keydown', handleKeyPress);
1731
+ }
1732
+
1733
+ return function () {
1734
+ return document.removeEventListener('keydown', handleKeyPress);
1735
+ };
1736
+ }, [softSelectable, handleKeyPress]);
1737
+ React.useEffect(function () {
1738
+ if (softSelectable && softSelectedAssetKey !== null) {
1739
+ document.addEventListener('click', handleClick, true);
1740
+ }
1741
+
1742
+ return function () {
1743
+ return document.removeEventListener('click', handleClick, true);
1744
+ };
1745
+ }, [softSelectable, softSelectedAssetKey, handleClick]);
1746
+ return React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(AssetGalleryBase$1, defaultTheme._extends({
1747
+ ref: assetGalleryCompactRef,
1748
+ style: {
1749
+ height: "".concat(totalGalleryHeight, "px")
1750
+ },
1751
+ className: props.className
1752
+ }, props), assets.map(function (asset) {
1753
+ return asset.layout.show && React__default['default'].createElement(React__default['default'].Fragment, {
1754
+ key: "asset-gallery-".concat(asset.layout.type, "-").concat(asset.key)
1755
+ }, asset.layout.type === 'groupLabel' && React__default['default'].createElement(GroupLabel, {
1756
+ style: {
1757
+ transform: "translate3d(".concat(asset.layout.translateX, "px,").concat(asset.layout.translateY, "px, 0)"),
1758
+ height: "".concat(asset.layout.height, "px")
1759
+ }
1760
+ }, asset.title), asset.layout.type === 'asset' && React__default['default'].createElement(AssetGalleryCardBase, {
1761
+ style: {
1762
+ transform: "translate3d(".concat(asset.layout.translateX, "px, ").concat(asset.layout.translateY, "px, 0)"),
1763
+ width: "".concat(asset.layout.width, "px"),
1764
+ height: "".concat(asset.layout.height, "px"),
1765
+ display: 'flex',
1766
+ justifyContent: 'center'
1767
+ }
1768
+ }, viewMode === 'grid' ? React__default['default'].createElement(AssetGalleryGridCard$1, {
1769
+ asset: asset,
1770
+ selectable: 'selectable' in asset ? asset.selectable : selectable,
1771
+ selected: selectedAssetKeys.includes(asset.key),
1772
+ extendedSelectMode: Boolean(selectedAssetKeys.length),
1773
+ onAssetSelected: onAssetSelected,
1774
+ onAssetUnselected: onAssetUnselected,
1775
+ softSelected: softSelectedAssetKey === asset.key,
1776
+ component: component
1777
+ }) : React__default['default'].createElement(AssetGalleryCompactCard$1, {
1778
+ asset: asset,
1779
+ activeSummaryCard: activeSummaryCard,
1780
+ displayVersionCount: displayVersionCount,
1781
+ displayVerificationIcon: displayVerificationIcon,
1782
+ hasHeightAndWidth: asset.layout.hasHeightAndWidth,
1783
+ collapseExtraInfo: asset.layout.width < 90,
1784
+ selectable: 'selectable' in asset ? asset.selectable : selectable,
1785
+ selected: selectedAssetKeys.includes(asset.key),
1786
+ extendedSelectMode: Boolean(selectedAssetKeys.length),
1787
+ onAssetSelected: onAssetSelected,
1788
+ onAssetUnselected: onAssetUnselected,
1789
+ softSelected: softSelectedAssetKey === asset.key,
1790
+ component: component
1791
+ })));
1792
+ })));
1793
+ });
1794
+ AssetGalleryBase.propTypes = process.env.NODE_ENV !== "production" ? {
1795
+ assets: defaultTheme.PropTypes.arrayOf(defaultTheme.PropTypes.shape(assetShape)),
1796
+ activeSummaryCard: defaultTheme.PropTypes.bool,
1797
+ displayVersionCount: defaultTheme.PropTypes.bool,
1798
+ displayVerificationIcon: defaultTheme.PropTypes.bool,
1799
+ viewMode: defaultTheme.PropTypes.oneOf(['compact', 'grid']),
1800
+ thumbnailMaxHeight: defaultTheme.PropTypes.number,
1801
+ selectable: defaultTheme.PropTypes.bool,
1802
+ selectedAssetKeys: defaultTheme.PropTypes.oneOfType([defaultTheme.PropTypes.arrayOf(defaultTheme.PropTypes.string), defaultTheme.PropTypes.arrayOf(defaultTheme.PropTypes.number)]).isRequired,
1803
+ scrollElement: defaultTheme.PropTypes.instanceOf(Element),
1804
+ onAssetSelected: defaultTheme.PropTypes.func.isRequired,
1805
+ onAssetUnselected: defaultTheme.PropTypes.func.isRequired,
1806
+ softSelectable: defaultTheme.PropTypes.bool,
1807
+ softSelectedAssetKey: defaultTheme.PropTypes.oneOfType([defaultTheme.PropTypes.string, defaultTheme.PropTypes.number]),
1808
+ onAssetSoftSelectedChanged: defaultTheme.PropTypes.func.isRequired,
1809
+ component: defaultTheme.PropTypes.func,
1810
+ className: defaultTheme.PropTypes.string
1811
+ } : {};
1812
+
1813
+ var AssetGallery = React__default['default'].forwardRef(function AssetGallery(_ref, forwardedRef) {
1814
+ var assets = _ref.assets,
1815
+ activeSummaryCard = _ref.activeSummaryCard,
1816
+ displayVersionCount = _ref.displayVersionCount,
1817
+ displayVerificationIcon = _ref.displayVerificationIcon,
1818
+ viewMode = _ref.viewMode,
1819
+ thumbnailMaxHeight = _ref.thumbnailMaxHeight,
1820
+ selectable = _ref.selectable,
1821
+ selectedAssetKeys = _ref.selectedAssetKeys,
1822
+ onSelectedChanged = _ref.onSelectedChanged,
1823
+ softSelectable = _ref.softSelectable,
1824
+ scrollElement = _ref.scrollElement,
1825
+ onSoftSelectedChanged = _ref.onSoftSelectedChanged,
1826
+ component = _ref.component,
1827
+ props = defaultTheme._objectWithoutProperties(_ref, ["assets", "activeSummaryCard", "displayVersionCount", "displayVerificationIcon", "viewMode", "thumbnailMaxHeight", "selectable", "selectedAssetKeys", "onSelectedChanged", "softSelectable", "scrollElement", "onSoftSelectedChanged", "component"]);
1828
+
1829
+ var _useState = React.useState(selectedAssetKeys || []),
1830
+ _useState2 = defaultTheme._slicedToArray(_useState, 2),
1831
+ selectedAssetKeysInternalState = _useState2[0],
1832
+ setSelectedAssetKeysInternalState = _useState2[1];
1833
+
1834
+ var _useState3 = React.useState(null),
1835
+ _useState4 = defaultTheme._slicedToArray(_useState3, 2),
1836
+ softSelectedAssetKeyInternalState = _useState4[0],
1837
+ setSoftSelectedAssetKeyInternalState = _useState4[1];
1838
+
1839
+ React.useEffect(function () {
1840
+ setSelectedAssetKeysInternalState(selectedAssetKeys || []);
1841
+ }, [selectedAssetKeys]);
1842
+ React.useEffect(function () {
1843
+ setSelectedAssetKeysInternalState(function (current) {
1844
+ return current.filter(function (c) {
1845
+ return assets.some(function (a) {
1846
+ return a.key === c;
1847
+ });
1848
+ });
1849
+ });
1850
+ }, [assets.length]);
1851
+ React.useEffect(function () {
1852
+ if (selectedAssetKeys === selectedAssetKeysInternalState) return;
1853
+
1854
+ if (lodash.isFunction(onSelectedChanged)) {
1855
+ onSelectedChanged(selectedAssetKeysInternalState);
1856
+ }
1857
+ }, [selectedAssetKeysInternalState]);
1858
+ React.useEffect(function () {
1859
+ if (lodash.isFunction(onSoftSelectedChanged)) {
1860
+ onSoftSelectedChanged(softSelectedAssetKeyInternalState);
1861
+ }
1862
+ }, [softSelectedAssetKeyInternalState]);
1863
+ var onSelected = React.useCallback(function (assetKey) {
1864
+ setSelectedAssetKeysInternalState(function (currentState) {
1865
+ return [].concat(defaultTheme._toConsumableArray(currentState), [assetKey]);
1866
+ });
1867
+ }, []);
1868
+ var onUnselected = React.useCallback(function (assetKey) {
1869
+ setSelectedAssetKeysInternalState(function (currentState) {
1870
+ return currentState.filter(function (filteredAssetKey) {
1871
+ return filteredAssetKey !== assetKey;
1872
+ });
1873
+ });
1874
+ }, []);
1875
+ var onAssetSoftSelectedChanged = React.useCallback(function () {
1876
+ var assetKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
1877
+ setSoftSelectedAssetKeyInternalState(assetKey);
1878
+ }, []);
1879
+ return React__default['default'].createElement(AssetGalleryBase, defaultTheme._extends({
1880
+ ref: forwardedRef,
1881
+ assets: assets,
1882
+ activeSummaryCard: activeSummaryCard,
1883
+ displayVersionCount: displayVersionCount,
1884
+ displayVerificationIcon: displayVerificationIcon,
1885
+ thumbnailMaxHeight: thumbnailMaxHeight,
1886
+ selectable: selectable,
1887
+ selectedAssetKeys: selectedAssetKeysInternalState,
1888
+ onAssetSelected: onSelected,
1889
+ onAssetUnselected: onUnselected,
1890
+ softSelectable: softSelectable,
1891
+ softSelectedAssetKey: softSelectedAssetKeyInternalState,
1892
+ scrollElement: scrollElement,
1893
+ onAssetSoftSelectedChanged: onAssetSoftSelectedChanged,
1894
+ component: component,
1895
+ viewMode: viewMode
1896
+ }, props));
1897
+ });
1898
+ AssetGallery.propTypes = process.env.NODE_ENV !== "production" ? {
1899
+ assets: defaultTheme.PropTypes.arrayOf(defaultTheme.PropTypes.shape(assetShape)),
1900
+ displayVersionCount: defaultTheme.PropTypes.bool,
1901
+ displayVerificationIcon: defaultTheme.PropTypes.bool,
1902
+ activeSummaryCard: defaultTheme.PropTypes.bool,
1903
+ viewMode: defaultTheme.PropTypes.oneOf(['compact', 'grid']),
1904
+ thumbnailMaxHeight: defaultTheme.PropTypes.number,
1905
+ selectable: defaultTheme.PropTypes.bool,
1906
+ selectedAssetKeys: defaultTheme.PropTypes.oneOfType([defaultTheme.PropTypes.arrayOf(defaultTheme.PropTypes.string), defaultTheme.PropTypes.arrayOf(defaultTheme.PropTypes.number)]),
1907
+ onSelectedChanged: defaultTheme.PropTypes.func,
1908
+ softSelectable: defaultTheme.PropTypes.bool,
1909
+ scrollElement: defaultTheme.PropTypes.instanceOf(Element),
1910
+ onSoftSelectedChanged: defaultTheme.PropTypes.func,
1911
+ component: defaultTheme.PropTypes.func
1912
+ } : {};
1913
+ AssetGallery.defaultProps = {
1914
+ assets: [],
1915
+ viewMode: 'compact',
1916
+ thumbnailMaxHeight: 300,
1917
+ selectedAssetKeys: [],
1918
+ activeSummaryCard: false,
1919
+ displayVerificationIcon: true
1920
+ };
1921
+
1922
+ exports.AssetGallery = AssetGallery;
1923
+ exports.SummaryCard = SummaryCard;