@ntbjs/react-components 1.2.0-rc.13 → 1.2.0-rc.15

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