@ntbjs/react-components 2.0.0-rc.29 → 2.0.0-rc.30

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