@ntbjs/react-components 2.0.12-rc.2 → 2.0.12-rc.4

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.
@@ -13,8 +13,8 @@ const Checkbox = styled.div.withConfig({
13
13
  flex-direction: column;
14
14
 
15
15
  ${props => props.$variant === 'black' && css`
16
- ${props.theme.themeProp('--checkbox-black-box', props.theme.getColor('white'), props.theme.getColor('black'))}
17
- ${props.theme.themeProp('--checkbox-black-check', props.theme.getColor('black'), props.theme.getColor('white'))}
16
+ ${props.theme.themeProp('--checkbox-black-box', props.theme.getColor('white'), 'black')}
17
+ ${props.theme.themeProp('--checkbox-black-check', 'black', props.theme.getColor('white'))}
18
18
  `}
19
19
  `;
20
20
  const CheckIcon = styled.div.withConfig({
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.styled.js","sources":["../../../src/components/inputs/Checkbox/Checkbox.styled.js"],"sourcesContent":["import styled, { css } from 'styled-components';\nimport { applyDefaultTheme } from '../../../utils/defaultTheme';\n\nconst checkboxSize = '18px';\nconst blackVariantSize = '24px';\n\nconst shouldForwardProp = prop => {\n return prop !== 'theme' && !prop.startsWith('$');\n};\n\nexport const Checkbox = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n display: flex;\n flex-direction: column;\n\n ${props =>\n props.$variant === 'black' &&\n css`\n ${props.theme.themeProp(\n '--checkbox-black-box',\n props.theme.getColor('white'),\n props.theme.getColor('black')\n )}\n ${props.theme.themeProp(\n '--checkbox-black-check',\n props.theme.getColor('black'),\n props.theme.getColor('white')\n )}\n `}\n`;\n\nexport const CheckIcon = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n opacity: 0;\n transform: scale(0.1);\n transition: all 200ms;\n position: absolute;\n width: 12px;\n top: 4px;\n left: 3px;\n color: ${props => props.theme.getColor('gray-100')};\n\n svg {\n width: 100%;\n display: block;\n }\n`;\n\nexport const IndeterminateCheckIcon = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n opacity: 0;\n transform: scale(0.1);\n transition: all 200ms;\n position: absolute;\n height: 2px;\n top: 8px;\n left: 4px;\n background: ${props => props.theme.getColor('gray-100')};\n width: 10px;\n`;\n\nexport const CheckboxLabel = styled.label\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n display: inline-flex;\n position: relative;\n cursor: pointer;\n user-select: none;\n min-height: ${checkboxSize};\n text-align: left;\n flex-wrap: wrap;\n flex: 1;\n line-height: ${checkboxSize};\n margin-right: auto;\n\n & input[type='checkbox'] {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n margin: 0;\n }\n\n &::before {\n content: '';\n border: 2px solid ${props => props.theme.getColor('gray-300')};\n border-radius: 2px;\n transition: all 200ms;\n width: ${checkboxSize};\n height: ${checkboxSize};\n box-sizing: border-box;\n ${props =>\n props.muted &&\n css`\n opacity: 0.75;\n `}\n }\n\n &:has(input[type='checkbox']:checked) {\n &::before {\n background: ${props => props.theme.getColor('emerald-500')};\n border-color: ${props => props.theme.getColor('emerald-500')};\n }\n }\n\n &:has(input[type='checkbox']:not([data-indeterminate='true']):checked) {\n ${CheckIcon} {\n opacity: 1;\n transform: scale(1);\n }\n }\n\n &:has(input[type='checkbox'][data-indeterminate='true']:checked) {\n ${IndeterminateCheckIcon} {\n opacity: 1;\n transform: scale(1);\n }\n }\n\n ${props =>\n props.readOnly &&\n css`\n opacity: 0.5;\n cursor: default;\n pointer-events: none;\n user-select: text;\n `}\n\n ${props =>\n props.disabled &&\n css`\n opacity: 0.5;\n cursor: not-allowed;\n `}\n\n ${props =>\n props.$variant === 'black' &&\n css`\n min-height: ${blackVariantSize};\n line-height: ${blackVariantSize};\n\n &::before {\n width: ${blackVariantSize};\n height: ${blackVariantSize};\n border-radius: 4px;\n border-color: var(--checkbox-black-box);\n background: transparent;\n }\n\n &:has(input[type='checkbox']:checked) {\n &::before {\n background: var(--checkbox-black-box);\n border-color: var(--checkbox-black-box);\n }\n }\n\n ${CheckIcon} {\n width: 14px;\n top: 6px;\n left: 5px;\n color: var(--checkbox-black-check);\n }\n\n ${IndeterminateCheckIcon} {\n top: 11px;\n left: 7px;\n background: var(--checkbox-black-check);\n }\n `}\n`;\n\nexport const CheckboxVisualLabel = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n padding-left: 10px;\n font-weight: 400;\n font-size: 0.875rem;\n flex: 1;\n\n ${props =>\n props.theme.themeProp(\n 'color',\n props.theme.getColor('gray-300'),\n props.theme.getColor('gray-600')\n )};\n`;\n\nexport const Description = styled.p\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n margin: 0.375rem 0 0 0;\n font-size: 0.75rem;\n line-height: 1.333;\n\n ${props =>\n props.theme.themeProp(\n 'color',\n props.theme.getColor('gray-400'),\n props.theme.getColor('gray-500')\n )};\n\n ${props =>\n props.$error &&\n css`\n content: 'error';\n ${props.theme.themeProp(\n 'color',\n props.theme.getColor('red-200'),\n props.theme.getColor('red-500')\n )}\n `}\n`;\n"],"names":["checkboxSize","blackVariantSize","shouldForwardProp","prop","startsWith","Checkbox","styled","div","withConfig","attrs","applyDefaultTheme","props","$variant","css","theme","themeProp","getColor","CheckIcon","IndeterminateCheckIcon","CheckboxLabel","label","muted","readOnly","disabled","CheckboxVisualLabel","Description","p","$error"],"mappings":"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"}
1
+ {"version":3,"file":"Checkbox.styled.js","sources":["../../../src/components/inputs/Checkbox/Checkbox.styled.js"],"sourcesContent":["import styled, { css } from 'styled-components';\nimport { applyDefaultTheme } from '../../../utils/defaultTheme';\n\nconst checkboxSize = '18px';\nconst blackVariantSize = '24px';\n\nconst shouldForwardProp = prop => {\n return prop !== 'theme' && !prop.startsWith('$');\n};\n\nexport const Checkbox = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n display: flex;\n flex-direction: column;\n\n ${props =>\n props.$variant === 'black' &&\n css`\n ${props.theme.themeProp('--checkbox-black-box', props.theme.getColor('white'), 'black')}\n ${props.theme.themeProp('--checkbox-black-check', 'black', props.theme.getColor('white'))}\n `}\n`;\n\nexport const CheckIcon = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n opacity: 0;\n transform: scale(0.1);\n transition: all 200ms;\n position: absolute;\n width: 12px;\n top: 4px;\n left: 3px;\n color: ${props => props.theme.getColor('gray-100')};\n\n svg {\n width: 100%;\n display: block;\n }\n`;\n\nexport const IndeterminateCheckIcon = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n opacity: 0;\n transform: scale(0.1);\n transition: all 200ms;\n position: absolute;\n height: 2px;\n top: 8px;\n left: 4px;\n background: ${props => props.theme.getColor('gray-100')};\n width: 10px;\n`;\n\nexport const CheckboxLabel = styled.label\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n display: inline-flex;\n position: relative;\n cursor: pointer;\n user-select: none;\n min-height: ${checkboxSize};\n text-align: left;\n flex-wrap: wrap;\n flex: 1;\n line-height: ${checkboxSize};\n margin-right: auto;\n\n & input[type='checkbox'] {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n margin: 0;\n }\n\n &::before {\n content: '';\n border: 2px solid ${props => props.theme.getColor('gray-300')};\n border-radius: 2px;\n transition: all 200ms;\n width: ${checkboxSize};\n height: ${checkboxSize};\n box-sizing: border-box;\n ${props =>\n props.muted &&\n css`\n opacity: 0.75;\n `}\n }\n\n &:has(input[type='checkbox']:checked) {\n &::before {\n background: ${props => props.theme.getColor('emerald-500')};\n border-color: ${props => props.theme.getColor('emerald-500')};\n }\n }\n\n &:has(input[type='checkbox']:not([data-indeterminate='true']):checked) {\n ${CheckIcon} {\n opacity: 1;\n transform: scale(1);\n }\n }\n\n &:has(input[type='checkbox'][data-indeterminate='true']:checked) {\n ${IndeterminateCheckIcon} {\n opacity: 1;\n transform: scale(1);\n }\n }\n\n ${props =>\n props.readOnly &&\n css`\n opacity: 0.5;\n cursor: default;\n pointer-events: none;\n user-select: text;\n `}\n\n ${props =>\n props.disabled &&\n css`\n opacity: 0.5;\n cursor: not-allowed;\n `}\n\n ${props =>\n props.$variant === 'black' &&\n css`\n min-height: ${blackVariantSize};\n line-height: ${blackVariantSize};\n\n &::before {\n width: ${blackVariantSize};\n height: ${blackVariantSize};\n border-radius: 4px;\n border-color: var(--checkbox-black-box);\n background: transparent;\n }\n\n &:has(input[type='checkbox']:checked) {\n &::before {\n background: var(--checkbox-black-box);\n border-color: var(--checkbox-black-box);\n }\n }\n\n ${CheckIcon} {\n width: 14px;\n top: 6px;\n left: 5px;\n color: var(--checkbox-black-check);\n }\n\n ${IndeterminateCheckIcon} {\n top: 11px;\n left: 7px;\n background: var(--checkbox-black-check);\n }\n `}\n`;\n\nexport const CheckboxVisualLabel = styled.div\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n padding-left: 10px;\n font-weight: 400;\n font-size: 0.875rem;\n flex: 1;\n\n ${props =>\n props.theme.themeProp(\n 'color',\n props.theme.getColor('gray-300'),\n props.theme.getColor('gray-600')\n )};\n`;\n\nexport const Description = styled.p\n .withConfig({\n shouldForwardProp\n })\n .attrs(applyDefaultTheme)`\n margin: 0.375rem 0 0 0;\n font-size: 0.75rem;\n line-height: 1.333;\n\n ${props =>\n props.theme.themeProp(\n 'color',\n props.theme.getColor('gray-400'),\n props.theme.getColor('gray-500')\n )};\n\n ${props =>\n props.$error &&\n css`\n content: 'error';\n ${props.theme.themeProp(\n 'color',\n props.theme.getColor('red-200'),\n props.theme.getColor('red-500')\n )}\n `}\n`;\n"],"names":["checkboxSize","blackVariantSize","shouldForwardProp","prop","startsWith","Checkbox","styled","div","withConfig","attrs","applyDefaultTheme","props","$variant","css","theme","themeProp","getColor","CheckIcon","IndeterminateCheckIcon","CheckboxLabel","label","muted","readOnly","disabled","CheckboxVisualLabel","Description","p","$error"],"mappings":"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"}
@@ -19,6 +19,7 @@ const AssetGallery = React__default.forwardRef(function AssetGallery({
19
19
  onSoftSelectedChanged,
20
20
  component,
21
21
  displayIcon,
22
+ hideConsentSummary,
22
23
  ...props
23
24
  }, forwardedRef) {
24
25
  const [selectedAssetKeysInternalState, setSelectedAssetKeysInternalState] = useState(selectedAssetKeys || []);
@@ -67,7 +68,8 @@ const AssetGallery = React__default.forwardRef(function AssetGallery({
67
68
  scrollElement: scrollElement,
68
69
  onAssetSoftSelectedChanged: onAssetSoftSelectedChanged,
69
70
  component: component,
70
- viewMode: viewMode
71
+ viewMode: viewMode,
72
+ hideConsentSummary: hideConsentSummary
71
73
  }, props));
72
74
  });
73
75
  AssetGallery.propTypes = process.env.NODE_ENV !== "production" ? {
@@ -83,7 +85,8 @@ AssetGallery.propTypes = process.env.NODE_ENV !== "production" ? {
83
85
  softSelectable: PropTypes.bool,
84
86
  scrollElement: PropTypes.instanceOf(Element),
85
87
  onSoftSelectedChanged: PropTypes.func,
86
- component: PropTypes.func
88
+ component: PropTypes.func,
89
+ hideConsentSummary: PropTypes.bool
87
90
  } : {};
88
91
  AssetGallery.defaultProps = {
89
92
  assets: [],
@@ -1 +1 @@
1
- {"version":3,"file":"AssetGallery.js","sources":["../../../src/components/widgets/AssetGallery/AssetGallery.js"],"sourcesContent":["import { isFunction } from 'lodash';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport AssetGalleryBase from './AssetGalleryBase/AssetGalleryBase';\nimport { assetShape } from './asset.propType';\n\n/**\n * An asset gallery that can be used to display a larger amounts of assets. The Asset Gallery supports displaying\n * images and videos.\n *\n * ### Import\n *\n * ``` js\n * import { AssetGallery } from '@ntbjs/react-components/widgets'\n * // or\n * import AssetGallery from '@ntbjs/react-components/widgets/AssetGallery'\n * ```\n *\n * ### Custom asset card element\n * In some cases you may want to swap out the boring `<div>`-tag that wraps each individual asset in the gallery for\n * something more useful.\n * By doing this you can achieve side-effects that this library has no concept about – like wrapping the assets\n * in [React-routers](https://reactrouter.com/web/api/Link) `<Link>`-component for internal application routing when\n * you click the asset.\n *\n * The asset gallery allows you to change the root element that will be rendered around all individual asset via a\n * property on the asset object called `component`.\n *\n * ```jsx\n * const assets = [{\n * previewUrl: 'https://preview.sdl.no/v1/no/7Zb20FDFCu-dne-lxi1thQ/uRs25Mh-FJY?v=1613865342365',\n * width: 512,\n * height: 324\n * }]\n *\n * const customComponent = (asset, children) => (\n * <a href={`https://www.ntb.no/?fromAssetId=${asset.key}`} target=\"_blank\">\n * {children}\n * </a>\n * )\n *\n * <AssetGallery assets={assets} component={customComponent} />\n * ```\n *\n * When providing a custom element it will take the place of the `<div>` being the outer most parent of the\n * asset itself. All required props will then be automatically applied, like the `style`-attribute containing the\n * positioning style of the asset. To tell the asset gallery where you want the rest of the asset card we provide the `{children}`.\n *\n * **Note:** If the root-element of the custom component is a React component the component must accept rest props (`{...props}`).\n *\n * This pattern is very powerful and allows for great flexibility, as well as a way to interoperate with other\n * libraries, such as your favorite routing or forms library. **But it also comes with a small caveat!**\n *\n * #### Caveat with inlining\n * Using an inline function as an argument for the component prop may result in unexpected unmounting, since a new\n * component is passed every time React renders.\n *\n * If we are using an inline function to change the rendered component, React will remount each individual assets every\n * time `AssetGallery` is re-rendered. Not only will React update the DOM unnecessarily, the ripple effect of the individual\n * assets will also not work correctly.\n *\n * To fix this issue **avoid using inline functions or wrap the function in some sort of memoization**\n * like `React.useMemo()`.\n *\n * #### Prop Collisions\n * Prop Collisions is something to be aware of. The asset gallery will render your custom element like this:\n *\n * ```js\n * return React.createElement(props.component, props)\n * ```\n *\n * That means that all the required props that the library automatically applies will take precedence over consumer\n * defined props. An example of this is the `style`-prop.\n *\n */\nconst AssetGallery = React.forwardRef(function AssetGallery(\n {\n assets,\n activeSummaryCard,\n viewMode,\n thumbnailMaxHeight,\n selectable,\n customSelectedBorder,\n selectedAssetKeys,\n onSelectedChanged,\n softSelectable,\n scrollElement,\n onSoftSelectedChanged,\n component,\n displayIcon,\n ...props\n },\n forwardedRef\n) {\n // Internal state of the selected assets\n const [selectedAssetKeysInternalState, setSelectedAssetKeysInternalState] = useState(\n selectedAssetKeys || []\n );\n\n // Internal state of the soft selected asset\n const [softSelectedAssetKeyInternalState, setSoftSelectedAssetKeyInternalState] = useState(null);\n\n // Whenever the `selectedAssetKeys`-props changes we need to update the internal state\n useEffect(() => {\n setSelectedAssetKeysInternalState(selectedAssetKeys || []);\n }, [selectedAssetKeys]);\n\n // When the assets change we need to check if we have to update the list of selected assets\n // (removing keys of assets that is no longer present in `assets`)\n useEffect(() => {\n setSelectedAssetKeysInternalState(current => {\n return current.filter(c => assets.some(a => a.key === c));\n });\n }, [assets.length]);\n\n // Run the `onSelectedChanged` callback whenever `selectedAssetKeysInternalState` change\n useEffect(() => {\n // If the external and internal state of selected assets is in sync we can skip this update callback\n if (selectedAssetKeys === selectedAssetKeysInternalState) return;\n\n if (isFunction(onSelectedChanged)) {\n onSelectedChanged(selectedAssetKeysInternalState);\n }\n }, [selectedAssetKeysInternalState]);\n\n // Run the `onSoftSelectedChanged` callback whenever `softSelectedAssetKeyInternalState` change\n useEffect(() => {\n if (isFunction(onSoftSelectedChanged)) {\n onSoftSelectedChanged(softSelectedAssetKeyInternalState);\n }\n }, [softSelectedAssetKeyInternalState]);\n\n const onSelected = useCallback(assetKey => {\n setSelectedAssetKeysInternalState(currentState => [...currentState, assetKey]);\n }, []);\n\n const onUnselected = useCallback(assetKey => {\n setSelectedAssetKeysInternalState(currentState =>\n currentState.filter(filteredAssetKey => filteredAssetKey !== assetKey)\n );\n }, []);\n\n const onAssetSoftSelectedChanged = useCallback((assetKey = null) => {\n setSoftSelectedAssetKeyInternalState(assetKey);\n }, []);\n\n return (\n <AssetGalleryBase\n ref={forwardedRef}\n assets={assets}\n activeSummaryCard={activeSummaryCard}\n displayIcon={displayIcon}\n thumbnailMaxHeight={thumbnailMaxHeight}\n selectable={selectable}\n customSelectedBorder={customSelectedBorder}\n selectedAssetKeys={selectedAssetKeysInternalState}\n onAssetSelected={onSelected}\n onAssetUnselected={onUnselected}\n softSelectable={softSelectable}\n softSelectedAssetKey={softSelectedAssetKeyInternalState}\n scrollElement={scrollElement}\n onAssetSoftSelectedChanged={onAssetSoftSelectedChanged}\n component={component}\n viewMode={viewMode}\n {...props}\n />\n );\n});\n\nAssetGallery.propTypes = {\n /**\n * An array of assets to display in the gallery.\n */\n assets: PropTypes.arrayOf(PropTypes.shape(assetShape)),\n\n /**\n * Whether the asset gallery should display the Version Count or Verifications on default.\n */\n displayIcon: PropTypes.string,\n\n /**\n * Whether the asset gallery should render the Asset Summary Card on hover.\n */\n activeSummaryCard: PropTypes.bool,\n\n /**\n * The view mode of the gallery.\n */\n viewMode: PropTypes.oneOf(['compact', 'grid']),\n\n /**\n * The maximum height of thumbnails in the gallery. When the grid is computed the gallery will try\n * to have each row of the gallery as close to the max height as possible.\n * This option is ignored unless `viewMode: 'compact'`.\n */\n thumbnailMaxHeight: PropTypes.number,\n\n /**\n * Whether or not the asset gallery should have selectable asset cards\n */\n selectable: PropTypes.bool,\n\n /**\n * Whether or not the asset gallery should have custom borders on selected asset: Example: customSelectedBorder: ['#893FEB', '#EB513F'], where: customSelectedBorder.[0] is for darkMode and customSelectedBorder.[1] is for lightMode\n */\n customSelectedBorder: PropTypes.arrayOf(PropTypes.string),\n\n /**\n * An array containing the keys of all selected assets\n */\n selectedAssetKeys: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(PropTypes.number)\n ]),\n\n /**\n * A callback function to run when the selected assets change\n */\n onSelectedChanged: PropTypes.func,\n\n /**\n * Whether the asset gallery should have soft selectable asset cards\n */\n softSelectable: PropTypes.bool,\n\n /**\n * Scrollable element to attach event listeners to. Defaults to window.\n */\n scrollElement: PropTypes.instanceOf(Element),\n\n /**\n * A callback function to run when the soft selected asset change\n */\n onSoftSelectedChanged: PropTypes.func,\n\n /**\n * A function that returns a custom component to use for the card in the gallery - The function provides\n * `asset` as its first argument\n */\n component: PropTypes.func\n};\n\nAssetGallery.defaultProps = {\n assets: [],\n viewMode: 'compact',\n thumbnailMaxHeight: 300,\n selectedAssetKeys: [],\n customSelectedBorder: [],\n activeSummaryCard: false,\n displayIcon: ''\n};\n\nexport default AssetGallery;\n"],"names":["AssetGallery","React","forwardRef","assets","activeSummaryCard","viewMode","thumbnailMaxHeight","selectable","customSelectedBorder","selectedAssetKeys","onSelectedChanged","softSelectable","scrollElement","onSoftSelectedChanged","component","displayIcon","props","forwardedRef","selectedAssetKeysInternalState","setSelectedAssetKeysInternalState","useState","softSelectedAssetKeyInternalState","setSoftSelectedAssetKeyInternalState","useEffect","current","filter","c","some","a","key","length","isFunction","onSelected","useCallback","assetKey","currentState","onUnselected","filteredAssetKey","onAssetSoftSelectedChanged","createElement","AssetGalleryBase","_extends","ref","onAssetSelected","onAssetUnselected","softSelectedAssetKey","propTypes","process","env","NODE_ENV","PropTypes","arrayOf","shape","assetShape","string","bool","oneOf","number","oneOfType","func","instanceOf","Element","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"AssetGallery.js","sources":["../../../src/components/widgets/AssetGallery/AssetGallery.js"],"sourcesContent":["import { isFunction } from 'lodash';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport AssetGalleryBase from './AssetGalleryBase/AssetGalleryBase';\nimport { assetShape } from './asset.propType';\n\n/**\n * An asset gallery that can be used to display a larger amounts of assets. The Asset Gallery supports displaying\n * images and videos.\n *\n * ### Import\n *\n * ``` js\n * import { AssetGallery } from '@ntbjs/react-components/widgets'\n * // or\n * import AssetGallery from '@ntbjs/react-components/widgets/AssetGallery'\n * ```\n *\n * ### Custom asset card element\n * In some cases you may want to swap out the boring `<div>`-tag that wraps each individual asset in the gallery for\n * something more useful.\n * By doing this you can achieve side-effects that this library has no concept about – like wrapping the assets\n * in [React-routers](https://reactrouter.com/web/api/Link) `<Link>`-component for internal application routing when\n * you click the asset.\n *\n * The asset gallery allows you to change the root element that will be rendered around all individual asset via a\n * property on the asset object called `component`.\n *\n * ```jsx\n * const assets = [{\n * previewUrl: 'https://preview.sdl.no/v1/no/7Zb20FDFCu-dne-lxi1thQ/uRs25Mh-FJY?v=1613865342365',\n * width: 512,\n * height: 324\n * }]\n *\n * const customComponent = (asset, children) => (\n * <a href={`https://www.ntb.no/?fromAssetId=${asset.key}`} target=\"_blank\">\n * {children}\n * </a>\n * )\n *\n * <AssetGallery assets={assets} component={customComponent} />\n * ```\n *\n * When providing a custom element it will take the place of the `<div>` being the outer most parent of the\n * asset itself. All required props will then be automatically applied, like the `style`-attribute containing the\n * positioning style of the asset. To tell the asset gallery where you want the rest of the asset card we provide the `{children}`.\n *\n * **Note:** If the root-element of the custom component is a React component the component must accept rest props (`{...props}`).\n *\n * This pattern is very powerful and allows for great flexibility, as well as a way to interoperate with other\n * libraries, such as your favorite routing or forms library. **But it also comes with a small caveat!**\n *\n * #### Caveat with inlining\n * Using an inline function as an argument for the component prop may result in unexpected unmounting, since a new\n * component is passed every time React renders.\n *\n * If we are using an inline function to change the rendered component, React will remount each individual assets every\n * time `AssetGallery` is re-rendered. Not only will React update the DOM unnecessarily, the ripple effect of the individual\n * assets will also not work correctly.\n *\n * To fix this issue **avoid using inline functions or wrap the function in some sort of memoization**\n * like `React.useMemo()`.\n *\n * #### Prop Collisions\n * Prop Collisions is something to be aware of. The asset gallery will render your custom element like this:\n *\n * ```js\n * return React.createElement(props.component, props)\n * ```\n *\n * That means that all the required props that the library automatically applies will take precedence over consumer\n * defined props. An example of this is the `style`-prop.\n *\n */\nconst AssetGallery = React.forwardRef(function AssetGallery(\n {\n assets,\n activeSummaryCard,\n viewMode,\n thumbnailMaxHeight,\n selectable,\n customSelectedBorder,\n selectedAssetKeys,\n onSelectedChanged,\n softSelectable,\n scrollElement,\n onSoftSelectedChanged,\n component,\n displayIcon,\n hideConsentSummary,\n ...props\n },\n forwardedRef\n) {\n // Internal state of the selected assets\n const [selectedAssetKeysInternalState, setSelectedAssetKeysInternalState] = useState(\n selectedAssetKeys || []\n );\n\n // Internal state of the soft selected asset\n const [softSelectedAssetKeyInternalState, setSoftSelectedAssetKeyInternalState] = useState(null);\n\n // Whenever the `selectedAssetKeys`-props changes we need to update the internal state\n useEffect(() => {\n setSelectedAssetKeysInternalState(selectedAssetKeys || []);\n }, [selectedAssetKeys]);\n\n // When the assets change we need to check if we have to update the list of selected assets\n // (removing keys of assets that is no longer present in `assets`)\n useEffect(() => {\n setSelectedAssetKeysInternalState(current => {\n return current.filter(c => assets.some(a => a.key === c));\n });\n }, [assets.length]);\n\n // Run the `onSelectedChanged` callback whenever `selectedAssetKeysInternalState` change\n useEffect(() => {\n // If the external and internal state of selected assets is in sync we can skip this update callback\n if (selectedAssetKeys === selectedAssetKeysInternalState) return;\n\n if (isFunction(onSelectedChanged)) {\n onSelectedChanged(selectedAssetKeysInternalState);\n }\n }, [selectedAssetKeysInternalState]);\n\n // Run the `onSoftSelectedChanged` callback whenever `softSelectedAssetKeyInternalState` change\n useEffect(() => {\n if (isFunction(onSoftSelectedChanged)) {\n onSoftSelectedChanged(softSelectedAssetKeyInternalState);\n }\n }, [softSelectedAssetKeyInternalState]);\n\n const onSelected = useCallback(assetKey => {\n setSelectedAssetKeysInternalState(currentState => [...currentState, assetKey]);\n }, []);\n\n const onUnselected = useCallback(assetKey => {\n setSelectedAssetKeysInternalState(currentState =>\n currentState.filter(filteredAssetKey => filteredAssetKey !== assetKey)\n );\n }, []);\n\n const onAssetSoftSelectedChanged = useCallback((assetKey = null) => {\n setSoftSelectedAssetKeyInternalState(assetKey);\n }, []);\n\n return (\n <AssetGalleryBase\n ref={forwardedRef}\n assets={assets}\n activeSummaryCard={activeSummaryCard}\n displayIcon={displayIcon}\n thumbnailMaxHeight={thumbnailMaxHeight}\n selectable={selectable}\n customSelectedBorder={customSelectedBorder}\n selectedAssetKeys={selectedAssetKeysInternalState}\n onAssetSelected={onSelected}\n onAssetUnselected={onUnselected}\n softSelectable={softSelectable}\n softSelectedAssetKey={softSelectedAssetKeyInternalState}\n scrollElement={scrollElement}\n onAssetSoftSelectedChanged={onAssetSoftSelectedChanged}\n component={component}\n viewMode={viewMode}\n hideConsentSummary={hideConsentSummary}\n {...props}\n />\n );\n});\n\nAssetGallery.propTypes = {\n /**\n * An array of assets to display in the gallery.\n */\n assets: PropTypes.arrayOf(PropTypes.shape(assetShape)),\n\n /**\n * Whether the asset gallery should display the Version Count or Verifications on default.\n */\n displayIcon: PropTypes.string,\n\n /**\n * Whether the asset gallery should render the Asset Summary Card on hover.\n */\n activeSummaryCard: PropTypes.bool,\n\n /**\n * The view mode of the gallery.\n */\n viewMode: PropTypes.oneOf(['compact', 'grid']),\n\n /**\n * The maximum height of thumbnails in the gallery. When the grid is computed the gallery will try\n * to have each row of the gallery as close to the max height as possible.\n * This option is ignored unless `viewMode: 'compact'`.\n */\n thumbnailMaxHeight: PropTypes.number,\n\n /**\n * Whether or not the asset gallery should have selectable asset cards\n */\n selectable: PropTypes.bool,\n\n /**\n * Whether or not the asset gallery should have custom borders on selected asset: Example: customSelectedBorder: ['#893FEB', '#EB513F'], where: customSelectedBorder.[0] is for darkMode and customSelectedBorder.[1] is for lightMode\n */\n customSelectedBorder: PropTypes.arrayOf(PropTypes.string),\n\n /**\n * An array containing the keys of all selected assets\n */\n selectedAssetKeys: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(PropTypes.number)\n ]),\n\n /**\n * A callback function to run when the selected assets change\n */\n onSelectedChanged: PropTypes.func,\n\n /**\n * Whether the asset gallery should have soft selectable asset cards\n */\n softSelectable: PropTypes.bool,\n\n /**\n * Scrollable element to attach event listeners to. Defaults to window.\n */\n scrollElement: PropTypes.instanceOf(Element),\n\n /**\n * A callback function to run when the soft selected asset change\n */\n onSoftSelectedChanged: PropTypes.func,\n\n /**\n * A function that returns a custom component to use for the card in the gallery - The function provides\n * `asset` as its first argument\n */\n component: PropTypes.func,\n\n /**\n * When true, hides the consent summary footer on grid cards (CardFooter + CardDivider). Default: false.\n */\n hideConsentSummary: PropTypes.bool\n};\n\nAssetGallery.defaultProps = {\n assets: [],\n viewMode: 'compact',\n thumbnailMaxHeight: 300,\n selectedAssetKeys: [],\n customSelectedBorder: [],\n activeSummaryCard: false,\n displayIcon: ''\n};\n\nexport default AssetGallery;\n"],"names":["AssetGallery","React","forwardRef","assets","activeSummaryCard","viewMode","thumbnailMaxHeight","selectable","customSelectedBorder","selectedAssetKeys","onSelectedChanged","softSelectable","scrollElement","onSoftSelectedChanged","component","displayIcon","hideConsentSummary","props","forwardedRef","selectedAssetKeysInternalState","setSelectedAssetKeysInternalState","useState","softSelectedAssetKeyInternalState","setSoftSelectedAssetKeyInternalState","useEffect","current","filter","c","some","a","key","length","isFunction","onSelected","useCallback","assetKey","currentState","onUnselected","filteredAssetKey","onAssetSoftSelectedChanged","createElement","AssetGalleryBase","_extends","ref","onAssetSelected","onAssetUnselected","softSelectedAssetKey","propTypes","process","env","NODE_ENV","PropTypes","arrayOf","shape","assetShape","string","bool","oneOf","number","oneOfType","func","instanceOf","Element","defaultProps"],"mappings":"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"}
@@ -26,6 +26,7 @@ const AssetGalleryBase = React__default.forwardRef(function AssetGalleryBase({
26
26
  scrollElement: scrollElementProp,
27
27
  onAssetSoftSelectedChanged,
28
28
  component,
29
+ hideConsentSummary,
29
30
  ...props
30
31
  }, forwardedRef) {
31
32
  const assetGalleryDOMNode = useRef();
@@ -40,7 +41,7 @@ const AssetGalleryBase = React__default.forwardRef(function AssetGalleryBase({
40
41
  const PRIMARY_SCROLL_BUFFER_HEIGHT = 1500;
41
42
  const SECONDARY_SCROLL_BUFFER_HEIGHT = 500;
42
43
  const GRID_VIEW_MODE_ASSET_MIN_WIDTH = 300;
43
- const GRID_VIEW_MODE_ASSET_HEIGHT = 556;
44
+ const GRID_VIEW_MODE_ASSET_HEIGHT = hideConsentSummary ? 503 : 556;
44
45
  const MISSING_WIDTH_PLACEHOLDER = 1920;
45
46
  const MISSING_HEIGHT_PLACEHOLDER = 1080;
46
47
  const isBrowser = typeof window !== 'undefined';
@@ -346,7 +347,8 @@ const AssetGalleryBase = React__default.forwardRef(function AssetGalleryBase({
346
347
  onAssetSelected: onAssetSelected,
347
348
  onAssetUnselected: onAssetUnselected,
348
349
  softSelected: softSelectedAssetKey === asset.key,
349
- component: component
350
+ component: component,
351
+ hideConsentSummary: hideConsentSummary
350
352
  }) : React__default.createElement(AssetGalleryCompactCard, {
351
353
  asset: asset,
352
354
  activeSummaryCard: activeSummaryCard,
@@ -379,7 +381,8 @@ AssetGalleryBase.propTypes = process.env.NODE_ENV !== "production" ? {
379
381
  softSelectedAssetKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
380
382
  onAssetSoftSelectedChanged: PropTypes.func.isRequired,
381
383
  component: PropTypes.func,
382
- className: PropTypes.string
384
+ className: PropTypes.string,
385
+ hideConsentSummary: PropTypes.bool
383
386
  } : {};
384
387
 
385
388
  export { AssetGalleryBase as default };
@@ -1 +1 @@
1
- {"version":3,"file":"AssetGalleryBase.js","sources":["../../../../src/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryBase.js"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { throttle } from 'lodash';\nimport PropTypes from 'prop-types';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { assetShape } from '../asset.propType';\nimport useIsomorphicLayoutEffect from './../../../../hooks/useIsomorphicLayoutEffect';\nimport * as S from './AssetGalleryBase.styled';\nimport AssetGalleryCompactCard from './AssetGalleryCompactCard/AssetGalleryCompactCard';\nimport AssetGalleryGridCard from './AssetGalleryGridCard/AssetGalleryGridCard';\nconst AssetGalleryBase = React.forwardRef(function AssetGalleryBase(\n {\n assets: assetsProp,\n activeSummaryCard,\n displayIcon,\n viewMode,\n thumbnailMaxHeight,\n selectable,\n customSelectedBorder,\n selectedAssetKeys,\n onAssetSelected,\n onAssetUnselected,\n softSelectable,\n softSelectedAssetKey,\n scrollElement: scrollElementProp,\n onAssetSoftSelectedChanged,\n component,\n ...props\n },\n forwardedRef\n) {\n // Combine forwarded ref and the local ref\n const assetGalleryDOMNode = useRef();\n const assetGalleryCompactRef = useMergedRefs(forwardedRef, assetGalleryDOMNode);\n\n const assetGalleryWidth = useRef(0);\n const minimumRowAspectRatio = useRef(0);\n\n // Calculated assets\n const calculatedAssets = useRef([]);\n const [assets, setAssets] = useState([]);\n\n // Constants\n const MAXIMUM_ROW_HEIGHT = useMemo(\n () => (viewMode === 'grid' ? 450 : thumbnailMaxHeight),\n [viewMode, thumbnailMaxHeight]\n );\n const SPACE_BETWEEN_ASSETS = 8;\n const SPACE_UNDER_ASSETS = 8;\n const PRIMARY_SCROLL_BUFFER_HEIGHT = 1500;\n const SECONDARY_SCROLL_BUFFER_HEIGHT = 500;\n const GRID_VIEW_MODE_ASSET_MIN_WIDTH = 300;\n const GRID_VIEW_MODE_ASSET_HEIGHT = 556;\n const MISSING_WIDTH_PLACEHOLDER = 1920;\n const MISSING_HEIGHT_PLACEHOLDER = 1080;\n\n const isBrowser = typeof window !== 'undefined';\n\n const scrollElement = scrollElementProp || window;\n\n // Scroll position and direction\n const previousYOffset = useRef(isBrowser ? scrollElement.pageYOffset : 0);\n const latestYOffset = useRef(isBrowser ? scrollElement.pageYOffset : 0);\n const scrollDirection = useRef('down');\n\n // Track resize changes and set the current Asset Gallery width\n useIsomorphicLayoutEffect(() => {\n if (!assetGalleryDOMNode.current) return;\n\n const throttledOnResize = throttle(onResize, 1);\n\n const resizeObserver = new ResizeObserver(throttledOnResize);\n\n resizeObserver.observe(assetGalleryDOMNode.current);\n\n function onResize(entries) {\n entries.forEach(entry => {\n // setAssetGalleryWidth(entry.contentRect.width);\n if (assetGalleryWidth.current === entry.contentRect.width) return;\n window.requestAnimationFrame(() => {\n assetGalleryWidth.current = entry.contentRect.width;\n main();\n });\n });\n }\n\n return () => {\n resizeObserver.unobserve(assetGalleryDOMNode.current);\n };\n }, [assetsProp, assetGalleryDOMNode, MAXIMUM_ROW_HEIGHT]);\n\n //Re calculate Asset Gallery when something changes `MAXIMUM_ROW_HEIGHT` or `assetsProp` changes\n useEffect(() => {\n main();\n }, [MAXIMUM_ROW_HEIGHT, assetsProp]);\n\n const main = () => {\n calculateAssetGalleryAspectRatio();\n calculateLayout();\n calculateVisibility();\n };\n\n const calculateAssetGalleryAspectRatio = () => {\n // We don't care to compute the aspect ratio if the width of the gallery is 0\n if (assetGalleryWidth.current > 0) {\n minimumRowAspectRatio.current = calculateAspectRatio(\n assetGalleryWidth.current,\n MAXIMUM_ROW_HEIGHT\n );\n }\n };\n\n // Calculate asset gallery layout\n const calculateLayout = () => {\n // Check for required attributes and omit assets that are missing the attribute\n const assetsWithoutAKey = assetsProp.filter(a => !a.key);\n if (assetsWithoutAKey.length > 0) {\n assetsProp = assetsProp.filter(a => a.key);\n assetsWithoutAKey.forEach(a =>\n console.warn(\n 'Omitted asset from the gallery because it was missing the unique `key` property.',\n a\n )\n );\n }\n\n if (viewMode === 'grid' && assetGalleryWidth.current > 0) {\n // State\n let row = []; // The list of images in the current row.\n let translateX = 0; // The current translateX value that we are at\n let translateY = 0; // The current translateY value that we are at\n const computedAssets = [];\n let lastGroup = null; // The last group that was created\n\n // Calculate how many assets we can put in a row before violating `ASSET_MIN_WIDTH`\n // but we always want minimum of 1 asset in a row\n const desiredAssetCountInRow =\n Math.floor(assetGalleryWidth.current / GRID_VIEW_MODE_ASSET_MIN_WIDTH) || 1;\n\n // Calculate the width of each asset in a row\n const desiredAssetWidth =\n assetGalleryWidth.current / desiredAssetCountInRow -\n SPACE_BETWEEN_ASSETS +\n SPACE_BETWEEN_ASSETS / desiredAssetCountInRow;\n\n assetsProp.forEach((asset, index) => {\n // Create a group label\n if (asset.group && asset.group !== lastGroup) {\n computedAssets.push({\n title: asset.group,\n key: asset.key,\n layout: {\n type: 'groupLabel',\n height: 50,\n translateX: Math.round(translateX),\n translateY: Math.round(translateY)\n }\n });\n lastGroup = asset.group;\n translateY += 50 + SPACE_UNDER_ASSETS;\n }\n\n row.push(asset);\n\n if (\n row.length === desiredAssetCountInRow ||\n index + 1 === assetsProp.length ||\n (assetsProp[index + 1]?.group && assetsProp[index + 1].group !== asset.group)\n ) {\n const rowHeight = GRID_VIEW_MODE_ASSET_HEIGHT;\n\n row.forEach(rowAsset => {\n computedAssets.push({\n ...rowAsset,\n layout: {\n type: 'asset', // Indicates that this is an asset and not a group label\n width: Math.round(desiredAssetWidth),\n height: Math.round(rowHeight),\n translateX: Math.round(translateX),\n translateY: Math.round(translateY)\n }\n });\n\n translateX += desiredAssetWidth + SPACE_BETWEEN_ASSETS;\n });\n\n row = [];\n translateX = 0;\n translateY += rowHeight + SPACE_UNDER_ASSETS;\n }\n });\n\n calculatedAssets.current = computedAssets;\n } else {\n if (minimumRowAspectRatio.current > 0) {\n // State\n let row = []; // The list of images in the current row.\n let translateX = 0; // The current translateX value that we are at\n let translateY = 0; // The current translateY value that we are at\n let rowAspectRatio = 0; // The aspect ratio of the row we are building\n let lastGroup = null; // The last group that was created\n\n const computedAssets = [];\n\n // Loop through all our images, building them up into rows and computing\n // the working rowAspectRatio.\n assetsProp.forEach((asset, index) => {\n // Create a group label\n if (asset.group && asset.group !== lastGroup) {\n computedAssets.push({\n title: asset.group,\n key: asset.key,\n layout: {\n type: 'groupLabel',\n height: 50,\n translateX: Math.round(translateX),\n translateY: Math.round(translateY)\n }\n });\n lastGroup = asset.group;\n translateY += 50 + SPACE_UNDER_ASSETS;\n }\n\n rowAspectRatio += calculateAspectRatio(\n asset.width || MISSING_WIDTH_PLACEHOLDER,\n asset.height || MISSING_HEIGHT_PLACEHOLDER\n );\n\n row.push(asset);\n\n // End the row if any of the conditions match\n if (\n rowAspectRatio >= minimumRowAspectRatio.current ||\n index + 1 === assetsProp.length ||\n (assetsProp[index + 1]?.group && assetsProp[index + 1].group !== asset.group)\n ) {\n // Make sure that the last row also has a reasonable height\n rowAspectRatio = Math.max(rowAspectRatio, minimumRowAspectRatio.current);\n\n // Compute this row's height.\n const totalDesiredWidthOfImages =\n assetGalleryWidth.current - SPACE_BETWEEN_ASSETS * (row.length - 1);\n const rowHeight = totalDesiredWidthOfImages / rowAspectRatio;\n\n row.forEach(rowAsset => {\n const assetWidth =\n rowHeight *\n calculateAspectRatio(\n rowAsset.width || MISSING_WIDTH_PLACEHOLDER,\n rowAsset.height || MISSING_HEIGHT_PLACEHOLDER\n );\n\n computedAssets.push({\n ...rowAsset,\n layout: {\n type: 'asset', // Indicates that this is an asset an not a group label\n width: Math.round(assetWidth),\n height: Math.round(rowHeight),\n translateX: Math.round(translateX),\n translateY: Math.round(translateY),\n hasHeightAndWidth: Boolean(rowAsset.width && rowAsset.height)\n }\n });\n\n // The next image is `SPACE_BETWEEN_ASSETS` pixels to the right of this image.\n translateX += assetWidth + SPACE_BETWEEN_ASSETS;\n });\n\n // Reset our state variables for next row.\n row = [];\n rowAspectRatio = 0;\n translateY += rowHeight + SPACE_UNDER_ASSETS;\n translateX = 0;\n }\n });\n\n calculatedAssets.current = computedAssets;\n }\n }\n };\n\n // Utility function to calculate the aspect ratio of a width and height\n function calculateAspectRatio(width, height) {\n return width / height;\n }\n\n // Calculate the total height of the gallery\n const totalGalleryHeight = useMemo(() => {\n if (assets.length === 0) {\n return 0;\n }\n\n const lastAsset = assets[assets.length - 1];\n\n if (assets.length < 8) {\n return (lastAsset.layout.translateY + lastAsset.layout.height) * 2;\n }\n\n return lastAsset.layout.translateY + lastAsset.layout.height;\n }, [assets]);\n\n useEffect(() => {\n const throttledOnScroll = throttle(onScroll, 200);\n\n scrollElement.addEventListener('scroll', throttledOnScroll, false);\n return () => scrollElement.removeEventListener('scroll', throttledOnScroll, false);\n }, [assetGalleryDOMNode, calculatedAssets]);\n\n function onScroll() {\n setScrollPositionAndDirection();\n calculateVisibility();\n }\n\n function setScrollPositionAndDirection() {\n const newYOffset = scrollElement.pageYOffset;\n previousYOffset.current = latestYOffset.current;\n latestYOffset.current = newYOffset;\n scrollDirection.current = latestYOffset.current > previousYOffset.current ? 'down' : 'up';\n }\n\n /**\n * +---------------------------+\n * | |\n * | |\n * | |\n * | |\n * + - - - - - - - - - - - - - + -------\n * | | A\n * | Secondary Buffer | SECONDARY_SCROLL_BUFFER_HEIGHT\n * | | V\n * +---------------------------+ -------\n * | | A\n * | | |\n * | | |\n * | Viewport | window.innerHeight\n * | | |\n * | | |\n * | | V\n * +---------------------------+ -------\n * | | A\n * | | |\n * | | |\n * | | |\n * | Primary Buffer | PRIMARY_SCROLL_BUFFER_HEIGHT\n * | | |\n * | | |\n * | | |\n * | | V\n * + - - - - - - - - - - - - - + -------\n * | |\n * | (Scroll direction) |\n * | | |\n * | | |\n * | V |\n * | |\n *\n */\n\n const calculateVisibility = () => {\n if (!assetGalleryDOMNode.current) return;\n\n // Get the top and bottom buffers heights.\n const bufferTop =\n scrollDirection.current === 'up'\n ? PRIMARY_SCROLL_BUFFER_HEIGHT\n : SECONDARY_SCROLL_BUFFER_HEIGHT;\n\n const bufferBottom =\n scrollDirection.current === 'up'\n ? SECONDARY_SCROLL_BUFFER_HEIGHT\n : PRIMARY_SCROLL_BUFFER_HEIGHT;\n\n const containerOffset = getOffsetTop(assetGalleryDOMNode.current);\n const scrollerHeight = scrollElement.innerHeight;\n\n const yOffset = latestYOffset.current;\n\n // This is the top of the top buffer. If the bottom of an image is above\n // this line, it will be removed.\n const minTranslateYPlusHeight = yOffset - containerOffset - bufferTop;\n\n // This is the bottom of the bottom buffer. If the top of an image is\n // below this line, it will be removed.\n const maxTranslateY = yOffset - containerOffset + scrollerHeight + bufferBottom;\n\n const finalizedAssets = calculatedAssets.current.map(asset => {\n if (\n scrollElement.self == window &&\n (asset.layout.translateY + asset.layout.height < minTranslateYPlusHeight ||\n asset.layout.translateY > maxTranslateY)\n ) {\n // Hide Image\n asset.layout.show = false;\n } else {\n // Show Image\n asset.layout.show = true;\n }\n\n return asset;\n });\n\n setAssets(finalizedAssets);\n };\n\n // Utility function that returns the distance from `elem` to the top of the page.\n // This is done by walking up the node tree, getting the offsetTop of each\n // parent node, until the top of the page.\n function getOffsetTop(elem) {\n let offsetTop = 0;\n do {\n if (!isNaN(elem.offsetTop)) {\n offsetTop += elem.offsetTop;\n }\n elem = elem.offsetParent;\n } while (elem);\n return offsetTop;\n }\n\n const handleKeyPress = useCallback(\n e => {\n function isElementVisible(el) {\n const rect = el.getBoundingClientRect(),\n vWidth = scrollElement.innerWidth || document.documentElement.clientWidth,\n vHeight = scrollElement.innerHeight || document.documentElement.clientHeight,\n efp = function (x, y) {\n return document.elementFromPoint(x, y);\n };\n\n // Return false if it's not in the viewport\n if (rect.right < 0 || rect.bottom < 0 || rect.left > vWidth || rect.top > vHeight)\n return false;\n\n // Return true if any of its four corners are visible\n return (\n el.contains(efp(rect.left, rect.top)) ||\n el.contains(efp(rect.right, rect.top)) ||\n el.contains(efp(rect.right, rect.bottom)) ||\n el.contains(efp(rect.left, rect.bottom))\n );\n }\n\n function softSelectFirstVisibleAsset() {\n const visibleAssets = assets.filter(asset => asset.layout.show);\n\n for (let i = 0; i < assetGalleryDOMNode.current.children.length; i++) {\n if (isElementVisible(assetGalleryDOMNode.current.children[i])) {\n onAssetSoftSelectedChanged(visibleAssets[i].key);\n break;\n }\n }\n }\n\n if (assets.length === 0) return;\n\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n if (softSelectedAssetKey === null) {\n softSelectFirstVisibleAsset();\n\n return;\n }\n }\n\n if (e.key === 'ArrowLeft') {\n const previousAssetIndex =\n assets.findIndex(asset => asset.key === softSelectedAssetKey) - 1;\n\n const previousAsset = assets[previousAssetIndex];\n\n if (previousAsset) {\n if (previousAsset.layout.show) {\n onAssetSoftSelectedChanged(previousAsset.key);\n } else {\n softSelectFirstVisibleAsset();\n }\n }\n\n return;\n }\n\n if (e.key === 'ArrowRight') {\n const nextAssetIndex = assets.findIndex(asset => asset.key === softSelectedAssetKey) + 1;\n\n const nextAsset = assets[nextAssetIndex];\n\n if (nextAsset) {\n if (nextAsset.layout.show) {\n onAssetSoftSelectedChanged(nextAsset.key);\n } else {\n softSelectFirstVisibleAsset();\n }\n }\n\n return;\n }\n\n if (e.key === 'Enter') {\n if (softSelectedAssetKey === null) return;\n\n if (selectedAssetKeys.includes(softSelectedAssetKey)) {\n onAssetUnselected(softSelectedAssetKey);\n } else {\n onAssetSelected(softSelectedAssetKey);\n }\n }\n },\n [\n assets,\n softSelectedAssetKey,\n onAssetSoftSelectedChanged,\n selectedAssetKeys,\n assetGalleryCompactRef\n ]\n );\n\n const handleClick = useCallback(() => {\n onAssetSoftSelectedChanged(null);\n }, []);\n\n // Add event listeners for keyboard navigation (soft select)\n useEffect(() => {\n if (softSelectable) {\n document.addEventListener('keydown', handleKeyPress);\n }\n\n return () => document.removeEventListener('keydown', handleKeyPress);\n }, [softSelectable, handleKeyPress]);\n\n useEffect(() => {\n if (softSelectable && softSelectedAssetKey !== null) {\n document.addEventListener('click', handleClick, true);\n }\n\n return () => document.removeEventListener('click', handleClick, true);\n }, [softSelectable, softSelectedAssetKey, handleClick]);\n\n return (\n <>\n <S.AssetGalleryBase\n ref={assetGalleryCompactRef}\n style={{ height: `${totalGalleryHeight}px` }}\n className={props.className}\n {...props}\n >\n {assets.map(\n asset =>\n asset.layout.show && (\n <React.Fragment key={`asset-gallery-${asset.layout.type}-${asset.key}`}>\n {asset.layout.type === 'groupLabel' && (\n <S.GroupLabel\n style={{\n transform: `translate3d(${asset.layout.translateX}px,${asset.layout.translateY}px, 0)`,\n height: `${asset.layout.height}px`\n }}\n >\n {asset.title}\n </S.GroupLabel>\n )}\n\n {asset.layout.type === 'asset' && (\n <S.AssetGalleryCardBase\n style={{\n transform: `translate3d(${asset.layout.translateX}px, ${asset.layout.translateY}px, 0)`,\n width: `${asset.layout.width}px`,\n height: `${asset.layout.height}px`,\n display: 'flex',\n justifyContent: 'center'\n }}\n >\n {viewMode === 'grid' ? (\n <AssetGalleryGridCard\n asset={asset}\n selectable={'selectable' in asset ? asset.selectable : selectable}\n selected={selectedAssetKeys.includes(asset.key)}\n customSelectedBorder={customSelectedBorder}\n extendedSelectMode={Boolean(selectedAssetKeys.length)}\n onAssetSelected={onAssetSelected}\n onAssetUnselected={onAssetUnselected}\n softSelected={softSelectedAssetKey === asset.key}\n component={component}\n />\n ) : (\n <AssetGalleryCompactCard\n asset={asset}\n activeSummaryCard={activeSummaryCard}\n displayIcon={displayIcon}\n hasHeightAndWidth={asset.layout.hasHeightAndWidth}\n collapseExtraInfo={asset.layout.width < 90}\n selectable={'selectable' in asset ? asset.selectable : selectable}\n selected={selectedAssetKeys.includes(asset.key)}\n customSelectedBorder={customSelectedBorder}\n extendedSelectMode={Boolean(selectedAssetKeys.length)}\n onAssetSelected={onAssetSelected}\n onAssetUnselected={onAssetUnselected}\n softSelected={softSelectedAssetKey === asset.key}\n component={component}\n />\n )}\n </S.AssetGalleryCardBase>\n )}\n </React.Fragment>\n )\n )}\n </S.AssetGalleryBase>\n </>\n );\n});\n\nAssetGalleryBase.propTypes = {\n /**\n * An array of assets to display in the gallery.\n */\n assets: PropTypes.arrayOf(PropTypes.shape(assetShape)),\n\n /**\n * Whether the asset gallery should render the Asset Summary Card on hover.\n */\n activeSummaryCard: PropTypes.bool,\n\n /**\n * Whether the asset gallery should display the Version Count or Verifications on default.\n */\n displayIcon: PropTypes.string,\n\n /**\n * The view mode of the gallery.\n */\n viewMode: PropTypes.oneOf(['compact', 'grid']),\n\n /**\n * The maximum height of thumbnails in the gallery. When the grid is computed the gallery will try\n * to have each row of the gallery as close to the max height as possible.\n */\n thumbnailMaxHeight: PropTypes.number,\n\n /**\n * Whether or not the asset gallery should have selectable asset cards\n */\n selectable: PropTypes.bool,\n\n /**\n * Whether or not the asset gallery should have custom borders on selected asset\n */\n customSelectedBorder: PropTypes.arrayOf(PropTypes.string),\n\n /**\n * An array containing the key of all selected assets\n */\n selectedAssetKeys: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(PropTypes.number)\n ]).isRequired,\n\n /**\n * Scrollable element to attach event listeners to. Defaults to window.\n */\n scrollElement: PropTypes.instanceOf(Element),\n\n /**\n * The callback function when an asset is selected - returns the selected asset key\n */\n onAssetSelected: PropTypes.func.isRequired,\n\n /**\n * The callback function when an asset is unselected - returns the unselected asset key\n */\n onAssetUnselected: PropTypes.func.isRequired,\n\n /**\n * Whether or not the asset gallery should have soft selectable asset cards\n */\n softSelectable: PropTypes.bool,\n\n /**\n * A value containing the key of the soft selected asset or null\n */\n softSelectedAssetKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n /**\n * The callback function when soft selected asset changes - returns the selected asset key or null\n */\n onAssetSoftSelectedChanged: PropTypes.func.isRequired,\n\n /**\n * A function that returns a custom component to use for the card in the gallery - The function provides\n * `asset` as its first argument\n */\n component: PropTypes.func,\n\n /**\n * Optional className\n */\n className: PropTypes.string\n};\n\nexport default AssetGalleryBase;\n"],"names":["AssetGalleryBase","React","forwardRef","assets","assetsProp","activeSummaryCard","displayIcon","viewMode","thumbnailMaxHeight","selectable","customSelectedBorder","selectedAssetKeys","onAssetSelected","onAssetUnselected","softSelectable","softSelectedAssetKey","scrollElement","scrollElementProp","onAssetSoftSelectedChanged","component","props","forwardedRef","assetGalleryDOMNode","useRef","assetGalleryCompactRef","useMergedRefs","assetGalleryWidth","minimumRowAspectRatio","calculatedAssets","setAssets","useState","MAXIMUM_ROW_HEIGHT","useMemo","SPACE_BETWEEN_ASSETS","SPACE_UNDER_ASSETS","PRIMARY_SCROLL_BUFFER_HEIGHT","SECONDARY_SCROLL_BUFFER_HEIGHT","GRID_VIEW_MODE_ASSET_MIN_WIDTH","GRID_VIEW_MODE_ASSET_HEIGHT","MISSING_WIDTH_PLACEHOLDER","MISSING_HEIGHT_PLACEHOLDER","isBrowser","window","previousYOffset","pageYOffset","latestYOffset","scrollDirection","useIsomorphicLayoutEffect","current","throttledOnResize","throttle","onResize","resizeObserver","ResizeObserver","observe","entries","forEach","entry","contentRect","width","requestAnimationFrame","main","unobserve","useEffect","calculateAssetGalleryAspectRatio","calculateLayout","calculateVisibility","calculateAspectRatio","assetsWithoutAKey","filter","a","key","length","console","warn","row","translateX","translateY","computedAssets","lastGroup","desiredAssetCountInRow","Math","floor","desiredAssetWidth","asset","index","group","push","title","layout","type","height","round","rowHeight","rowAsset","rowAspectRatio","max","totalDesiredWidthOfImages","assetWidth","hasHeightAndWidth","Boolean","totalGalleryHeight","lastAsset","throttledOnScroll","onScroll","addEventListener","removeEventListener","setScrollPositionAndDirection","newYOffset","bufferTop","bufferBottom","containerOffset","getOffsetTop","scrollerHeight","innerHeight","yOffset","minTranslateYPlusHeight","maxTranslateY","finalizedAssets","map","self","show","elem","offsetTop","isNaN","offsetParent","handleKeyPress","useCallback","e","isElementVisible","el","rect","getBoundingClientRect","vWidth","innerWidth","document","documentElement","clientWidth","vHeight","clientHeight","efp","x","y","elementFromPoint","right","bottom","left","top","contains","softSelectFirstVisibleAsset","visibleAssets","i","children","previousAssetIndex","findIndex","previousAsset","nextAssetIndex","nextAsset","includes","handleClick","createElement","Fragment","S","_extends","ref","style","className","transform","display","justifyContent","AssetGalleryGridCard","selected","extendedSelectMode","softSelected","AssetGalleryCompactCard","collapseExtraInfo","propTypes","process","env","NODE_ENV","PropTypes","arrayOf","shape","assetShape","bool","string","oneOf","number","oneOfType","isRequired","instanceOf","Element","func"],"mappings":"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"}
1
+ {"version":3,"file":"AssetGalleryBase.js","sources":["../../../../src/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryBase.js"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { throttle } from 'lodash';\nimport PropTypes from 'prop-types';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { assetShape } from '../asset.propType';\nimport useIsomorphicLayoutEffect from './../../../../hooks/useIsomorphicLayoutEffect';\nimport * as S from './AssetGalleryBase.styled';\nimport AssetGalleryCompactCard from './AssetGalleryCompactCard/AssetGalleryCompactCard';\nimport AssetGalleryGridCard from './AssetGalleryGridCard/AssetGalleryGridCard';\nconst AssetGalleryBase = React.forwardRef(function AssetGalleryBase(\n {\n assets: assetsProp,\n activeSummaryCard,\n displayIcon,\n viewMode,\n thumbnailMaxHeight,\n selectable,\n customSelectedBorder,\n selectedAssetKeys,\n onAssetSelected,\n onAssetUnselected,\n softSelectable,\n softSelectedAssetKey,\n scrollElement: scrollElementProp,\n onAssetSoftSelectedChanged,\n component,\n hideConsentSummary,\n ...props\n },\n forwardedRef\n) {\n // Combine forwarded ref and the local ref\n const assetGalleryDOMNode = useRef();\n const assetGalleryCompactRef = useMergedRefs(forwardedRef, assetGalleryDOMNode);\n\n const assetGalleryWidth = useRef(0);\n const minimumRowAspectRatio = useRef(0);\n\n // Calculated assets\n const calculatedAssets = useRef([]);\n const [assets, setAssets] = useState([]);\n\n // Constants\n const MAXIMUM_ROW_HEIGHT = useMemo(\n () => (viewMode === 'grid' ? 450 : thumbnailMaxHeight),\n [viewMode, thumbnailMaxHeight]\n );\n const SPACE_BETWEEN_ASSETS = 8;\n const SPACE_UNDER_ASSETS = 8;\n const PRIMARY_SCROLL_BUFFER_HEIGHT = 1500;\n const SECONDARY_SCROLL_BUFFER_HEIGHT = 500;\n const GRID_VIEW_MODE_ASSET_MIN_WIDTH = 300;\n const GRID_VIEW_MODE_ASSET_HEIGHT = hideConsentSummary ? 503 : 556;\n const MISSING_WIDTH_PLACEHOLDER = 1920;\n const MISSING_HEIGHT_PLACEHOLDER = 1080;\n\n const isBrowser = typeof window !== 'undefined';\n\n const scrollElement = scrollElementProp || window;\n\n // Scroll position and direction\n const previousYOffset = useRef(isBrowser ? scrollElement.pageYOffset : 0);\n const latestYOffset = useRef(isBrowser ? scrollElement.pageYOffset : 0);\n const scrollDirection = useRef('down');\n\n // Track resize changes and set the current Asset Gallery width\n useIsomorphicLayoutEffect(() => {\n if (!assetGalleryDOMNode.current) return;\n\n const throttledOnResize = throttle(onResize, 1);\n\n const resizeObserver = new ResizeObserver(throttledOnResize);\n\n resizeObserver.observe(assetGalleryDOMNode.current);\n\n function onResize(entries) {\n entries.forEach(entry => {\n // setAssetGalleryWidth(entry.contentRect.width);\n if (assetGalleryWidth.current === entry.contentRect.width) return;\n window.requestAnimationFrame(() => {\n assetGalleryWidth.current = entry.contentRect.width;\n main();\n });\n });\n }\n\n return () => {\n resizeObserver.unobserve(assetGalleryDOMNode.current);\n };\n }, [assetsProp, assetGalleryDOMNode, MAXIMUM_ROW_HEIGHT]);\n\n //Re calculate Asset Gallery when something changes `MAXIMUM_ROW_HEIGHT` or `assetsProp` changes\n useEffect(() => {\n main();\n }, [MAXIMUM_ROW_HEIGHT, assetsProp]);\n\n const main = () => {\n calculateAssetGalleryAspectRatio();\n calculateLayout();\n calculateVisibility();\n };\n\n const calculateAssetGalleryAspectRatio = () => {\n // We don't care to compute the aspect ratio if the width of the gallery is 0\n if (assetGalleryWidth.current > 0) {\n minimumRowAspectRatio.current = calculateAspectRatio(\n assetGalleryWidth.current,\n MAXIMUM_ROW_HEIGHT\n );\n }\n };\n\n // Calculate asset gallery layout\n const calculateLayout = () => {\n // Check for required attributes and omit assets that are missing the attribute\n const assetsWithoutAKey = assetsProp.filter(a => !a.key);\n if (assetsWithoutAKey.length > 0) {\n assetsProp = assetsProp.filter(a => a.key);\n assetsWithoutAKey.forEach(a =>\n console.warn(\n 'Omitted asset from the gallery because it was missing the unique `key` property.',\n a\n )\n );\n }\n\n if (viewMode === 'grid' && assetGalleryWidth.current > 0) {\n // State\n let row = []; // The list of images in the current row.\n let translateX = 0; // The current translateX value that we are at\n let translateY = 0; // The current translateY value that we are at\n const computedAssets = [];\n let lastGroup = null; // The last group that was created\n\n // Calculate how many assets we can put in a row before violating `ASSET_MIN_WIDTH`\n // but we always want minimum of 1 asset in a row\n const desiredAssetCountInRow =\n Math.floor(assetGalleryWidth.current / GRID_VIEW_MODE_ASSET_MIN_WIDTH) || 1;\n\n // Calculate the width of each asset in a row\n const desiredAssetWidth =\n assetGalleryWidth.current / desiredAssetCountInRow -\n SPACE_BETWEEN_ASSETS +\n SPACE_BETWEEN_ASSETS / desiredAssetCountInRow;\n\n assetsProp.forEach((asset, index) => {\n // Create a group label\n if (asset.group && asset.group !== lastGroup) {\n computedAssets.push({\n title: asset.group,\n key: asset.key,\n layout: {\n type: 'groupLabel',\n height: 50,\n translateX: Math.round(translateX),\n translateY: Math.round(translateY)\n }\n });\n lastGroup = asset.group;\n translateY += 50 + SPACE_UNDER_ASSETS;\n }\n\n row.push(asset);\n\n if (\n row.length === desiredAssetCountInRow ||\n index + 1 === assetsProp.length ||\n (assetsProp[index + 1]?.group && assetsProp[index + 1].group !== asset.group)\n ) {\n const rowHeight = GRID_VIEW_MODE_ASSET_HEIGHT;\n\n row.forEach(rowAsset => {\n computedAssets.push({\n ...rowAsset,\n layout: {\n type: 'asset', // Indicates that this is an asset and not a group label\n width: Math.round(desiredAssetWidth),\n height: Math.round(rowHeight),\n translateX: Math.round(translateX),\n translateY: Math.round(translateY)\n }\n });\n\n translateX += desiredAssetWidth + SPACE_BETWEEN_ASSETS;\n });\n\n row = [];\n translateX = 0;\n translateY += rowHeight + SPACE_UNDER_ASSETS;\n }\n });\n\n calculatedAssets.current = computedAssets;\n } else {\n if (minimumRowAspectRatio.current > 0) {\n // State\n let row = []; // The list of images in the current row.\n let translateX = 0; // The current translateX value that we are at\n let translateY = 0; // The current translateY value that we are at\n let rowAspectRatio = 0; // The aspect ratio of the row we are building\n let lastGroup = null; // The last group that was created\n\n const computedAssets = [];\n\n // Loop through all our images, building them up into rows and computing\n // the working rowAspectRatio.\n assetsProp.forEach((asset, index) => {\n // Create a group label\n if (asset.group && asset.group !== lastGroup) {\n computedAssets.push({\n title: asset.group,\n key: asset.key,\n layout: {\n type: 'groupLabel',\n height: 50,\n translateX: Math.round(translateX),\n translateY: Math.round(translateY)\n }\n });\n lastGroup = asset.group;\n translateY += 50 + SPACE_UNDER_ASSETS;\n }\n\n rowAspectRatio += calculateAspectRatio(\n asset.width || MISSING_WIDTH_PLACEHOLDER,\n asset.height || MISSING_HEIGHT_PLACEHOLDER\n );\n\n row.push(asset);\n\n // End the row if any of the conditions match\n if (\n rowAspectRatio >= minimumRowAspectRatio.current ||\n index + 1 === assetsProp.length ||\n (assetsProp[index + 1]?.group && assetsProp[index + 1].group !== asset.group)\n ) {\n // Make sure that the last row also has a reasonable height\n rowAspectRatio = Math.max(rowAspectRatio, minimumRowAspectRatio.current);\n\n // Compute this row's height.\n const totalDesiredWidthOfImages =\n assetGalleryWidth.current - SPACE_BETWEEN_ASSETS * (row.length - 1);\n const rowHeight = totalDesiredWidthOfImages / rowAspectRatio;\n\n row.forEach(rowAsset => {\n const assetWidth =\n rowHeight *\n calculateAspectRatio(\n rowAsset.width || MISSING_WIDTH_PLACEHOLDER,\n rowAsset.height || MISSING_HEIGHT_PLACEHOLDER\n );\n\n computedAssets.push({\n ...rowAsset,\n layout: {\n type: 'asset', // Indicates that this is an asset an not a group label\n width: Math.round(assetWidth),\n height: Math.round(rowHeight),\n translateX: Math.round(translateX),\n translateY: Math.round(translateY),\n hasHeightAndWidth: Boolean(rowAsset.width && rowAsset.height)\n }\n });\n\n // The next image is `SPACE_BETWEEN_ASSETS` pixels to the right of this image.\n translateX += assetWidth + SPACE_BETWEEN_ASSETS;\n });\n\n // Reset our state variables for next row.\n row = [];\n rowAspectRatio = 0;\n translateY += rowHeight + SPACE_UNDER_ASSETS;\n translateX = 0;\n }\n });\n\n calculatedAssets.current = computedAssets;\n }\n }\n };\n\n // Utility function to calculate the aspect ratio of a width and height\n function calculateAspectRatio(width, height) {\n return width / height;\n }\n\n // Calculate the total height of the gallery\n const totalGalleryHeight = useMemo(() => {\n if (assets.length === 0) {\n return 0;\n }\n\n const lastAsset = assets[assets.length - 1];\n\n if (assets.length < 8) {\n return (lastAsset.layout.translateY + lastAsset.layout.height) * 2;\n }\n\n return lastAsset.layout.translateY + lastAsset.layout.height;\n }, [assets]);\n\n useEffect(() => {\n const throttledOnScroll = throttle(onScroll, 200);\n\n scrollElement.addEventListener('scroll', throttledOnScroll, false);\n return () => scrollElement.removeEventListener('scroll', throttledOnScroll, false);\n }, [assetGalleryDOMNode, calculatedAssets]);\n\n function onScroll() {\n setScrollPositionAndDirection();\n calculateVisibility();\n }\n\n function setScrollPositionAndDirection() {\n const newYOffset = scrollElement.pageYOffset;\n previousYOffset.current = latestYOffset.current;\n latestYOffset.current = newYOffset;\n scrollDirection.current = latestYOffset.current > previousYOffset.current ? 'down' : 'up';\n }\n\n /**\n * +---------------------------+\n * | |\n * | |\n * | |\n * | |\n * + - - - - - - - - - - - - - + -------\n * | | A\n * | Secondary Buffer | SECONDARY_SCROLL_BUFFER_HEIGHT\n * | | V\n * +---------------------------+ -------\n * | | A\n * | | |\n * | | |\n * | Viewport | window.innerHeight\n * | | |\n * | | |\n * | | V\n * +---------------------------+ -------\n * | | A\n * | | |\n * | | |\n * | | |\n * | Primary Buffer | PRIMARY_SCROLL_BUFFER_HEIGHT\n * | | |\n * | | |\n * | | |\n * | | V\n * + - - - - - - - - - - - - - + -------\n * | |\n * | (Scroll direction) |\n * | | |\n * | | |\n * | V |\n * | |\n *\n */\n\n const calculateVisibility = () => {\n if (!assetGalleryDOMNode.current) return;\n\n // Get the top and bottom buffers heights.\n const bufferTop =\n scrollDirection.current === 'up'\n ? PRIMARY_SCROLL_BUFFER_HEIGHT\n : SECONDARY_SCROLL_BUFFER_HEIGHT;\n\n const bufferBottom =\n scrollDirection.current === 'up'\n ? SECONDARY_SCROLL_BUFFER_HEIGHT\n : PRIMARY_SCROLL_BUFFER_HEIGHT;\n\n const containerOffset = getOffsetTop(assetGalleryDOMNode.current);\n const scrollerHeight = scrollElement.innerHeight;\n\n const yOffset = latestYOffset.current;\n\n // This is the top of the top buffer. If the bottom of an image is above\n // this line, it will be removed.\n const minTranslateYPlusHeight = yOffset - containerOffset - bufferTop;\n\n // This is the bottom of the bottom buffer. If the top of an image is\n // below this line, it will be removed.\n const maxTranslateY = yOffset - containerOffset + scrollerHeight + bufferBottom;\n\n const finalizedAssets = calculatedAssets.current.map(asset => {\n if (\n scrollElement.self == window &&\n (asset.layout.translateY + asset.layout.height < minTranslateYPlusHeight ||\n asset.layout.translateY > maxTranslateY)\n ) {\n // Hide Image\n asset.layout.show = false;\n } else {\n // Show Image\n asset.layout.show = true;\n }\n\n return asset;\n });\n\n setAssets(finalizedAssets);\n };\n\n // Utility function that returns the distance from `elem` to the top of the page.\n // This is done by walking up the node tree, getting the offsetTop of each\n // parent node, until the top of the page.\n function getOffsetTop(elem) {\n let offsetTop = 0;\n do {\n if (!isNaN(elem.offsetTop)) {\n offsetTop += elem.offsetTop;\n }\n elem = elem.offsetParent;\n } while (elem);\n return offsetTop;\n }\n\n const handleKeyPress = useCallback(\n e => {\n function isElementVisible(el) {\n const rect = el.getBoundingClientRect(),\n vWidth = scrollElement.innerWidth || document.documentElement.clientWidth,\n vHeight = scrollElement.innerHeight || document.documentElement.clientHeight,\n efp = function (x, y) {\n return document.elementFromPoint(x, y);\n };\n\n // Return false if it's not in the viewport\n if (rect.right < 0 || rect.bottom < 0 || rect.left > vWidth || rect.top > vHeight)\n return false;\n\n // Return true if any of its four corners are visible\n return (\n el.contains(efp(rect.left, rect.top)) ||\n el.contains(efp(rect.right, rect.top)) ||\n el.contains(efp(rect.right, rect.bottom)) ||\n el.contains(efp(rect.left, rect.bottom))\n );\n }\n\n function softSelectFirstVisibleAsset() {\n const visibleAssets = assets.filter(asset => asset.layout.show);\n\n for (let i = 0; i < assetGalleryDOMNode.current.children.length; i++) {\n if (isElementVisible(assetGalleryDOMNode.current.children[i])) {\n onAssetSoftSelectedChanged(visibleAssets[i].key);\n break;\n }\n }\n }\n\n if (assets.length === 0) return;\n\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n if (softSelectedAssetKey === null) {\n softSelectFirstVisibleAsset();\n\n return;\n }\n }\n\n if (e.key === 'ArrowLeft') {\n const previousAssetIndex =\n assets.findIndex(asset => asset.key === softSelectedAssetKey) - 1;\n\n const previousAsset = assets[previousAssetIndex];\n\n if (previousAsset) {\n if (previousAsset.layout.show) {\n onAssetSoftSelectedChanged(previousAsset.key);\n } else {\n softSelectFirstVisibleAsset();\n }\n }\n\n return;\n }\n\n if (e.key === 'ArrowRight') {\n const nextAssetIndex = assets.findIndex(asset => asset.key === softSelectedAssetKey) + 1;\n\n const nextAsset = assets[nextAssetIndex];\n\n if (nextAsset) {\n if (nextAsset.layout.show) {\n onAssetSoftSelectedChanged(nextAsset.key);\n } else {\n softSelectFirstVisibleAsset();\n }\n }\n\n return;\n }\n\n if (e.key === 'Enter') {\n if (softSelectedAssetKey === null) return;\n\n if (selectedAssetKeys.includes(softSelectedAssetKey)) {\n onAssetUnselected(softSelectedAssetKey);\n } else {\n onAssetSelected(softSelectedAssetKey);\n }\n }\n },\n [\n assets,\n softSelectedAssetKey,\n onAssetSoftSelectedChanged,\n selectedAssetKeys,\n assetGalleryCompactRef\n ]\n );\n\n const handleClick = useCallback(() => {\n onAssetSoftSelectedChanged(null);\n }, []);\n\n // Add event listeners for keyboard navigation (soft select)\n useEffect(() => {\n if (softSelectable) {\n document.addEventListener('keydown', handleKeyPress);\n }\n\n return () => document.removeEventListener('keydown', handleKeyPress);\n }, [softSelectable, handleKeyPress]);\n\n useEffect(() => {\n if (softSelectable && softSelectedAssetKey !== null) {\n document.addEventListener('click', handleClick, true);\n }\n\n return () => document.removeEventListener('click', handleClick, true);\n }, [softSelectable, softSelectedAssetKey, handleClick]);\n\n return (\n <>\n <S.AssetGalleryBase\n ref={assetGalleryCompactRef}\n style={{ height: `${totalGalleryHeight}px` }}\n className={props.className}\n {...props}\n >\n {assets.map(\n asset =>\n asset.layout.show && (\n <React.Fragment key={`asset-gallery-${asset.layout.type}-${asset.key}`}>\n {asset.layout.type === 'groupLabel' && (\n <S.GroupLabel\n style={{\n transform: `translate3d(${asset.layout.translateX}px,${asset.layout.translateY}px, 0)`,\n height: `${asset.layout.height}px`\n }}\n >\n {asset.title}\n </S.GroupLabel>\n )}\n\n {asset.layout.type === 'asset' && (\n <S.AssetGalleryCardBase\n style={{\n transform: `translate3d(${asset.layout.translateX}px, ${asset.layout.translateY}px, 0)`,\n width: `${asset.layout.width}px`,\n height: `${asset.layout.height}px`,\n display: 'flex',\n justifyContent: 'center'\n }}\n >\n {viewMode === 'grid' ? (\n <AssetGalleryGridCard\n asset={asset}\n selectable={'selectable' in asset ? asset.selectable : selectable}\n selected={selectedAssetKeys.includes(asset.key)}\n customSelectedBorder={customSelectedBorder}\n extendedSelectMode={Boolean(selectedAssetKeys.length)}\n onAssetSelected={onAssetSelected}\n onAssetUnselected={onAssetUnselected}\n softSelected={softSelectedAssetKey === asset.key}\n component={component}\n hideConsentSummary={hideConsentSummary}\n />\n ) : (\n <AssetGalleryCompactCard\n asset={asset}\n activeSummaryCard={activeSummaryCard}\n displayIcon={displayIcon}\n hasHeightAndWidth={asset.layout.hasHeightAndWidth}\n collapseExtraInfo={asset.layout.width < 90}\n selectable={'selectable' in asset ? asset.selectable : selectable}\n selected={selectedAssetKeys.includes(asset.key)}\n customSelectedBorder={customSelectedBorder}\n extendedSelectMode={Boolean(selectedAssetKeys.length)}\n onAssetSelected={onAssetSelected}\n onAssetUnselected={onAssetUnselected}\n softSelected={softSelectedAssetKey === asset.key}\n component={component}\n />\n )}\n </S.AssetGalleryCardBase>\n )}\n </React.Fragment>\n )\n )}\n </S.AssetGalleryBase>\n </>\n );\n});\n\nAssetGalleryBase.propTypes = {\n /**\n * An array of assets to display in the gallery.\n */\n assets: PropTypes.arrayOf(PropTypes.shape(assetShape)),\n\n /**\n * Whether the asset gallery should render the Asset Summary Card on hover.\n */\n activeSummaryCard: PropTypes.bool,\n\n /**\n * Whether the asset gallery should display the Version Count or Verifications on default.\n */\n displayIcon: PropTypes.string,\n\n /**\n * The view mode of the gallery.\n */\n viewMode: PropTypes.oneOf(['compact', 'grid']),\n\n /**\n * The maximum height of thumbnails in the gallery. When the grid is computed the gallery will try\n * to have each row of the gallery as close to the max height as possible.\n */\n thumbnailMaxHeight: PropTypes.number,\n\n /**\n * Whether or not the asset gallery should have selectable asset cards\n */\n selectable: PropTypes.bool,\n\n /**\n * Whether or not the asset gallery should have custom borders on selected asset\n */\n customSelectedBorder: PropTypes.arrayOf(PropTypes.string),\n\n /**\n * An array containing the key of all selected assets\n */\n selectedAssetKeys: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.arrayOf(PropTypes.number)\n ]).isRequired,\n\n /**\n * Scrollable element to attach event listeners to. Defaults to window.\n */\n scrollElement: PropTypes.instanceOf(Element),\n\n /**\n * The callback function when an asset is selected - returns the selected asset key\n */\n onAssetSelected: PropTypes.func.isRequired,\n\n /**\n * The callback function when an asset is unselected - returns the unselected asset key\n */\n onAssetUnselected: PropTypes.func.isRequired,\n\n /**\n * Whether or not the asset gallery should have soft selectable asset cards\n */\n softSelectable: PropTypes.bool,\n\n /**\n * A value containing the key of the soft selected asset or null\n */\n softSelectedAssetKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n /**\n * The callback function when soft selected asset changes - returns the selected asset key or null\n */\n onAssetSoftSelectedChanged: PropTypes.func.isRequired,\n\n /**\n * A function that returns a custom component to use for the card in the gallery - The function provides\n * `asset` as its first argument\n */\n component: PropTypes.func,\n\n /**\n * Optional className\n */\n className: PropTypes.string,\n\n /**\n * When true, hides the consent summary footer on grid cards (CardFooter + CardDivider). Default: false.\n */\n hideConsentSummary: PropTypes.bool\n};\n\nexport default AssetGalleryBase;\n"],"names":["AssetGalleryBase","React","forwardRef","assets","assetsProp","activeSummaryCard","displayIcon","viewMode","thumbnailMaxHeight","selectable","customSelectedBorder","selectedAssetKeys","onAssetSelected","onAssetUnselected","softSelectable","softSelectedAssetKey","scrollElement","scrollElementProp","onAssetSoftSelectedChanged","component","hideConsentSummary","props","forwardedRef","assetGalleryDOMNode","useRef","assetGalleryCompactRef","useMergedRefs","assetGalleryWidth","minimumRowAspectRatio","calculatedAssets","setAssets","useState","MAXIMUM_ROW_HEIGHT","useMemo","SPACE_BETWEEN_ASSETS","SPACE_UNDER_ASSETS","PRIMARY_SCROLL_BUFFER_HEIGHT","SECONDARY_SCROLL_BUFFER_HEIGHT","GRID_VIEW_MODE_ASSET_MIN_WIDTH","GRID_VIEW_MODE_ASSET_HEIGHT","MISSING_WIDTH_PLACEHOLDER","MISSING_HEIGHT_PLACEHOLDER","isBrowser","window","previousYOffset","pageYOffset","latestYOffset","scrollDirection","useIsomorphicLayoutEffect","current","throttledOnResize","throttle","onResize","resizeObserver","ResizeObserver","observe","entries","forEach","entry","contentRect","width","requestAnimationFrame","main","unobserve","useEffect","calculateAssetGalleryAspectRatio","calculateLayout","calculateVisibility","calculateAspectRatio","assetsWithoutAKey","filter","a","key","length","console","warn","row","translateX","translateY","computedAssets","lastGroup","desiredAssetCountInRow","Math","floor","desiredAssetWidth","asset","index","group","push","title","layout","type","height","round","rowHeight","rowAsset","rowAspectRatio","max","totalDesiredWidthOfImages","assetWidth","hasHeightAndWidth","Boolean","totalGalleryHeight","lastAsset","throttledOnScroll","onScroll","addEventListener","removeEventListener","setScrollPositionAndDirection","newYOffset","bufferTop","bufferBottom","containerOffset","getOffsetTop","scrollerHeight","innerHeight","yOffset","minTranslateYPlusHeight","maxTranslateY","finalizedAssets","map","self","show","elem","offsetTop","isNaN","offsetParent","handleKeyPress","useCallback","e","isElementVisible","el","rect","getBoundingClientRect","vWidth","innerWidth","document","documentElement","clientWidth","vHeight","clientHeight","efp","x","y","elementFromPoint","right","bottom","left","top","contains","softSelectFirstVisibleAsset","visibleAssets","i","children","previousAssetIndex","findIndex","previousAsset","nextAssetIndex","nextAsset","includes","handleClick","createElement","Fragment","S","_extends","ref","style","className","transform","display","justifyContent","AssetGalleryGridCard","selected","extendedSelectMode","softSelected","AssetGalleryCompactCard","collapseExtraInfo","propTypes","process","env","NODE_ENV","PropTypes","arrayOf","shape","assetShape","bool","string","oneOf","number","oneOfType","isRequired","instanceOf","Element","func"],"mappings":"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"}
@@ -47,9 +47,13 @@ const ComputedRootComponent = ({
47
47
  return React__default.cloneElement(component(asset, newProps.children), omit(newProps, ['children']));
48
48
  }
49
49
  }
50
- return React__default.createElement(AssetGalleryGridCard$2, _extends({
51
- ref: newProps.ref
52
- }, newProps));
50
+ const {
51
+ ref,
52
+ ...rest
53
+ } = newProps;
54
+ return React__default.createElement("div", _extends({
55
+ ref: ref
56
+ }, rest));
53
57
  };
54
58
  const ComputedActionButton = React__default.forwardRef(function ComputedActionButton({
55
59
  component,
@@ -124,7 +128,8 @@ const AssetGalleryGridCard = props => {
124
128
  onAssetUnselected,
125
129
  softSelected,
126
130
  component,
127
- scrollPosition
131
+ scrollPosition,
132
+ hideConsentSummary
128
133
  } = props;
129
134
  const [isCardHovered, setIsCardHovered] = React__default.useState(false);
130
135
  const [openedSubActions, updateOpenedSubActions] = React__default.useState([]);
@@ -332,7 +337,7 @@ const AssetGalleryGridCard = props => {
332
337
  }, asset.title || ''), React__default.createElement(CardDescription, {
333
338
  title: asset.description || ''
334
339
  }, asset.description || ''), React__default.createElement(InstructionsWrapper, {
335
- $hasContent: Boolean(asset.imageRights)
340
+ $hasContent: Boolean(asset.imageRights?.toString().trim())
336
341
  }, asset.imageRights && React__default.createElement(InstructionSeverityDisplay, {
337
342
  labels: asset.instructionLabels,
338
343
  instructionText: asset.imageRights,
@@ -382,7 +387,7 @@ const AssetGalleryGridCard = props => {
382
387
  completed: asset?.completed,
383
388
  $hasError: asset?.hasError,
384
389
  $customSelectedBorder: customSelectedBorder
385
- }, renderThumbnail(), renderDetails(), renderConsentSummaryInfo(), renderCheckboxRow()));
390
+ }, renderThumbnail(), renderDetails(), !hideConsentSummary && renderConsentSummaryInfo(), renderCheckboxRow()));
386
391
  };
387
392
  AssetGalleryGridCard.propTypes = process.env.NODE_ENV !== "production" ? {
388
393
  asset: PropTypes.shape(assetShapeWithLayout).isRequired,
@@ -394,7 +399,8 @@ AssetGalleryGridCard.propTypes = process.env.NODE_ENV !== "production" ? {
394
399
  onAssetUnselected: PropTypes.func.isRequired,
395
400
  softSelected: PropTypes.bool.isRequired,
396
401
  component: PropTypes.func,
397
- scrollPosition: PropTypes.number
402
+ scrollPosition: PropTypes.number,
403
+ hideConsentSummary: PropTypes.bool
398
404
  } : {};
399
405
  AssetGalleryGridCard.defaultProps = {};
400
406
  var AssetGalleryGridCard$1 = trackWindowScroll(React__default.memo(AssetGalleryGridCard, (prevProps, nextProps) => {
@@ -1 +1 @@
1
- {"version":3,"file":"AssetGalleryGridCard.js","sources":["../../../../../src/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryGridCard/AssetGalleryGridCard.js"],"sourcesContent":["import { get, isEmpty, isFunction, mapKeys, omit } from 'lodash';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useRef } from 'react';\nimport {\n LazyLoadComponent,\n LazyLoadImage,\n trackWindowScroll\n} from 'react-lazy-load-image-component';\nimport { HeadsetIcon, LayersIcon, PlayIcon } from '../../../../../icons';\nimport { convertMsToHMS } from '../../../../../utils/dateTime';\nimport { Badge, Popover, Tooltip } from '../../../../data';\nimport { ActionButton, Checkbox } from '../../../../inputs';\nimport ContextMenu from '../../../ContextMenu/ContextMenu';\nimport ContextMenuItem from '../../../ContextMenu/ContextMenuItem/ContextMenuItem';\nimport { assetShapeWithLayout } from '../../asset.propType';\nimport * as S from './AssetGalleryGridCard.styled';\nimport InstructionSeverityDisplay from '../../../InstructionSeverityDisplay';\n\n/**\n >>> Section 1: renderThumbnail():\n┌─────────────────────────────────────────┐ ← S.AssetGalleryGridCard (Root)\n│[renderversionsBadge] [severityIcon]│ ← S.HorizontalBar (Top)\n├─────────────────────────────────────────┤\n│ │ │ │\n│ (spacer) │ [renderPreview]│ [action]│ ← S.ThumbnailRow (Inc. ComputedActionButton)\n│ │ │ [action]│ ← S.ActionsContainer\n│ │ │ │\n├─────────────────────────────────────────┤\n│ [renderMediaBadge] │ ← S.HorizontalBar (Bottom)\n├─────────────────────────────────────────┤\n│ | >>> Section 2: renderDetails():\n│ [asset.title] │ ← S.CardTitle\n│ [asset.description] │ ← S.CardDescription\n├─────────────────────────────────────────┤\n│ [InstructionSeverityDisplay] │ ← S.InstructionsWrapper\n| |\n| | >>> Section 3:renderConsentSummaryInfo():\n├─────────────────────────────────────────┤ ← S.CardDivider\n│ [footerLeft] [footerRight] │ ← S.CardFooter\n├─────────────────────────────────────────┤ ← S.CardDivider\n| |\n│ | >>> Section 4:renderCheckboxRow():\n│ [CheckRectangleIcon / Outline] │ ← S.CheckboxRow\n└─────────────────────────────────────────┘\n Approx Height: 536px (Updated severity card takes more space than XD Design)\n Note: Every block renders ALWAYS to maintain same height+alignment in gallery\n */\n\n// eslint-disable-next-line react/prop-types\nconst ComputedRootComponent = ({ component, asset, ...props }) => {\n // Omit props we don't need\n const newProps = mapKeys(\n omit(props, [\n 'theme',\n 'extendedSelectMode',\n 'softSelected',\n '$softSelected',\n 'customSelectedBorder',\n '$customSelectedBorder',\n 'isCardHovered',\n '$isCardHovered',\n 'completed',\n '$hasError'\n ]),\n (_, key) => (key === 'innerRef' ? 'ref' : key)\n );\n\n if (component) {\n if (!isFunction(component)) throw Error('Expected a function in component-prop');\n\n if (React.isValidElement(component(asset, newProps.children))) {\n return React.cloneElement(component(asset, newProps.children), omit(newProps, ['children']));\n }\n }\n\n return <S.AssetGalleryGridCard ref={newProps.ref} {...newProps} />;\n};\n\n/* eslint-disable react/prop-types */\nconst ComputedActionButton = React.forwardRef(function ComputedActionButton(\n // eslint-disable-next-line react/prop-types\n { component, className, subActions = [], isSubActionsOpened, ...props },\n forwardedRef\n) {\n const newProps = props;\n if (!isEmpty(subActions)) {\n const contextMenuItems = subActions.map((subAction, key) => {\n const { onClick, title, icon } = subAction;\n return <ContextMenuItem key={key} onClickEffect={onClick} title={title} icon={icon} />;\n });\n const contextMenu = <ContextMenu>{contextMenuItems}</ContextMenu>;\n newProps.children = (\n <Popover\n contextMenu={true}\n content={contextMenu}\n placement={'bottom-end'}\n visible={isSubActionsOpened}\n zIndex={10001}\n offset={[0, -8]}\n >\n <ActionButton\n useShadow={false}\n active={true}\n ref={forwardedRef}\n className={className}\n icon={newProps.icon}\n backgroundColors={['black', 'white']}\n onClick={newProps.onClick}\n actionWidthHeight={[40, 40]}\n />\n </Popover>\n );\n } else {\n newProps.children = (\n <ActionButton\n useShadow={false}\n active={true}\n ref={forwardedRef}\n className={className}\n icon={newProps.icon}\n onClick={newProps.onClick}\n backgroundColors={['black', 'white']}\n actionWidthHeight={[40, 40]}\n />\n );\n }\n\n if (component) {\n if (!isFunction(component)) throw Error('Expected a function in component-prop');\n\n if (React.isValidElement(component())) {\n return React.cloneElement(component(), { ...omit(newProps, 'icon') });\n }\n }\n\n return <React.Fragment>{newProps.children}</React.Fragment>;\n});\n/* eslint-disable react/prop-types */\n\nconst AssetGalleryGridCard = props => {\n const {\n asset,\n selectable,\n selected,\n customSelectedBorder,\n extendedSelectMode,\n onAssetSelected,\n onAssetUnselected,\n softSelected,\n component,\n scrollPosition\n } = props;\n\n const [isCardHovered, setIsCardHovered] = React.useState(false);\n const [openedSubActions, updateOpenedSubActions] = React.useState([]);\n useEffect(() => {\n const newOpenedSubActions = (asset?.actions ?? []).map(() => false);\n updateOpenedSubActions(newOpenedSubActions);\n }, [asset]);\n\n useEffect(() => {\n if (!isCardHovered && openedSubActions?.length) {\n updateOpenedSubActions(openedSubActions.map(() => false));\n }\n }, [isCardHovered]);\n\n const mouseHasEnteredCard = useCallback(() => {\n setIsCardHovered(true);\n }, []);\n\n const mouseHasLeftCard = useCallback(() => {\n setIsCardHovered(false);\n }, []);\n\n const onSubActionsViewToggle = useCallback(\n actionIndex => {\n const newOpenedSubActions = openedSubActions.map((isOpened, index) => {\n if (index !== actionIndex) {\n return false;\n }\n return !isOpened;\n });\n updateOpenedSubActions(newOpenedSubActions);\n },\n [openedSubActions]\n );\n\n const videoPlayerRef = useRef();\n const cardRef = useRef();\n const dragRef = useRef(null);\n\n function onMouseEnter(event) {\n if (videoPlayerRef.current) {\n const playPromise = videoPlayerRef.current.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n // Playback started!\n })\n .catch(() => {\n // Play was prevented - silently swallow play errors\n });\n }\n }\n\n if (isFunction(asset.onMouseEnter)) {\n asset.onMouseEnter(event, asset);\n }\n\n mouseHasEnteredCard();\n }\n\n function onMouseLeave() {\n if (videoPlayerRef.current) {\n videoPlayerRef.current.pause();\n }\n\n mouseHasLeftCard();\n }\n\n function onClick(event) {\n if (extendedSelectMode) {\n return onSelectClick(event);\n }\n\n if (isFunction(asset.onClick)) {\n asset.onClick(event, asset);\n }\n }\n\n function onSelectClick(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (selected) {\n return onAssetUnselected(asset.key);\n }\n\n return onAssetSelected(asset.key);\n }\n\n const onActionClick = useCallback(\n (event, action, index) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (isFunction(action?.onClick)) {\n action.onClick(asset);\n }\n\n if (!isEmpty(action?.subActions)) {\n onSubActionsViewToggle(index);\n }\n },\n [onSubActionsViewToggle]\n );\n\n const shouldOpenSubActions = useCallback(\n actionIndex => openedSubActions[actionIndex],\n [openedSubActions]\n );\n\n function onContextMenu(event) {\n event.preventDefault();\n asset.onContextMenu(event);\n }\n\n function renderPreview(asset) {\n let previewContent = null;\n\n if (asset.fileType?.toLowerCase() === 'video') {\n previewContent = (\n <LazyLoadComponent scrollPosition={scrollPosition}>\n <video ref={videoPlayerRef} loop muted>\n <source src={asset.previewUrl} type=\"video/mp4\" />\n </video>\n </LazyLoadComponent>\n );\n } else if (asset.fileType?.toLowerCase() === 'audio') {\n previewContent = (\n <LazyLoadComponent scrollPosition={scrollPosition}>\n <div className=\"audio\">\n <HeadsetIcon />\n </div>\n </LazyLoadComponent>\n );\n } else {\n previewContent = (\n <LazyLoadImage\n alt={asset.title}\n src={asset.previewUrl}\n height=\"100%\"\n width=\"100%\"\n delayMethod=\"debounce\"\n delayTime={0}\n threshold={1500}\n scrollPosition={scrollPosition}\n />\n );\n }\n\n return previewContent;\n }\n\n useEffect(() => {\n if (isFunction(asset.onContextMenu)) {\n if (cardRef.current) {\n cardRef.current.addEventListener('contextmenu', onContextMenu);\n }\n return () => {\n if (cardRef.current) {\n cardRef.current.removeEventListener('contextmenu', onContextMenu);\n }\n };\n }\n }, []);\n\n function onDragstart(event) {\n asset.onDragstart(event);\n }\n\n useEffect(() => {\n if (isFunction(asset.onDragstart)) {\n if (dragRef.current) {\n dragRef.current.addEventListener('dragstart', onDragstart);\n }\n return () => {\n if (dragRef.current) {\n dragRef.current.removeEventListener('dragstart', onDragstart);\n }\n };\n }\n }, []);\n\n // If this asset is soft selected we will scroll it into the viewport if it's outside\n useEffect(() => {\n if (softSelected) {\n cardRef.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }, [softSelected]);\n\n const renderVersionsBadge = useCallback(() => {\n if (!asset?.versions) return null;\n\n return (\n <Badge\n badgeIcon={<LayersIcon />}\n badgeContent={asset.versions}\n backgroundColors={['black', 'black']}\n colors={['#f7f8f9', '#f7f8f9']}\n fontSize={12}\n fontWeight={500}\n lineHeight={16}\n verticalPadding={4}\n horizontalPadding={8}\n />\n );\n }, [asset]);\n\n const renderMediaBadge = useCallback(() => {\n let badgeIcon = null;\n let badgeContent = null;\n\n if (asset?.fileType === 'video') {\n badgeIcon = <PlayIcon />;\n }\n\n if (asset?.duration) {\n badgeContent = convertMsToHMS(asset.duration);\n }\n\n if (!badgeIcon && !badgeContent) return null;\n return (\n <Badge\n badgeIcon={badgeIcon}\n badgeContent={badgeContent}\n backgroundColors={['black', 'black']}\n colors={['#f7f8f9', '#f7f8f9']}\n fontSize={12}\n fontWeight={500}\n lineHeight={16}\n verticalPadding={4}\n horizontalPadding={8}\n minWidth={32}\n height={24}\n />\n );\n }, [asset]);\n\n const renderThumbnail = () => {\n return (\n <S.ThumbnailSection>\n <S.ThumbnailSelectedOverlay selected={selected} />\n {asset.overlay && <S.ConsumerOverlay>{asset.overlay}</S.ConsumerOverlay>}\n {/* Thumbnail Top bar */}\n <S.HorizontalBar>\n <S.HorizontalBarLeft>{renderVersionsBadge()}</S.HorizontalBarLeft>\n <S.HorizontalBarRight>\n {asset.statusIcon && <S.StatusIconCircle>{asset.statusIcon}</S.StatusIconCircle>}\n </S.HorizontalBarRight>\n </S.HorizontalBar>\n <S.ThumbnailRow>\n <S.ThumbnailSpacer />\n {/* Thumbnail */}\n <S.ThumbnailWrapper>\n <S.ThumbnailBox>{renderPreview(asset)}</S.ThumbnailBox>\n </S.ThumbnailWrapper>\n <S.ThumbnailActions>\n <S.ActionsContainer>\n {(asset.actions ?? []).map((action, index) => (\n <Tooltip key={`${asset.key}-${action.title}`} content={action.title}>\n <S.Action>\n <ComputedActionButton\n component={action.component}\n className={action.className}\n icon={action.icon}\n isSubActionsOpened={shouldOpenSubActions(index)}\n onClick={event => onActionClick(event, action, index)}\n subActions={action?.subActions}\n actionWidthHeight={action.actionWidthHeight}\n />\n </S.Action>\n </Tooltip>\n ))}\n </S.ActionsContainer>\n </S.ThumbnailActions>\n </S.ThumbnailRow>\n {/* Thumbnail Bottom bar */}\n <S.HorizontalBar>\n <S.HorizontalBarLeft></S.HorizontalBarLeft>\n <S.HorizontalBarRight>{renderMediaBadge()}</S.HorizontalBarRight>\n </S.HorizontalBar>\n </S.ThumbnailSection>\n );\n };\n\n const renderDetails = () => {\n return (\n <S.CardBody>\n <S.CardTitle title={asset.title || ''}>{asset.title || ''}</S.CardTitle>\n <S.CardDescription title={asset.description || ''}>\n {asset.description || ''}\n </S.CardDescription>\n <S.InstructionsWrapper $hasContent={Boolean(asset.imageRights)}>\n {asset.imageRights && (\n <InstructionSeverityDisplay\n labels={asset.instructionLabels}\n instructionText={asset.imageRights}\n severity={asset.instructionSeverity}\n showCard={false}\n padding=\"16px\"\n detailsFontSize=\"12px\"\n bgLight=\"transparent\"\n bgDark=\"transparent\"\n maxLines={2}\n />\n )}\n </S.InstructionsWrapper>\n </S.CardBody>\n );\n };\n\n const renderConsentSummaryInfo = () => {\n return (\n <>\n <S.CardFooter>\n <S.CardFooterLeft>{asset.summary?.footerLeft || null}</S.CardFooterLeft>\n <S.CardFooterRight>{asset.summary?.footerRight || null}</S.CardFooterRight>\n </S.CardFooter>\n <S.CardDivider />\n </>\n );\n };\n\n const renderCheckboxRow = () => {\n return (\n <S.CheckboxRow>\n {selectable && (\n <div onClick={onSelectClick}>\n <Checkbox\n variant=\"black\"\n checked={selected}\n onChange={event => {\n if (event.target.checked) {\n onAssetSelected(asset.key);\n } else {\n onAssetUnselected(asset.key);\n }\n }}\n />\n </div>\n )}\n </S.CheckboxRow>\n );\n };\n\n return (\n <S.AssetGalleryWrapper disabled={asset.disabled} ref={cardRef}>\n <S.AssetGalleryGridCard\n as={ComputedRootComponent}\n component={component}\n asset={asset}\n disabled={asset.disabled}\n onClick={onClick}\n extendedSelectMode={extendedSelectMode}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n draggable={asset.draggable}\n innerRef={dragRef}\n selected={selected}\n $softSelected={softSelected}\n completed={asset?.completed}\n $hasError={asset?.hasError}\n $customSelectedBorder={customSelectedBorder}\n >\n {renderThumbnail()}\n {renderDetails()}\n {renderConsentSummaryInfo()}\n {renderCheckboxRow()}\n </S.AssetGalleryGridCard>\n </S.AssetGalleryWrapper>\n );\n};\n\nAssetGalleryGridCard.propTypes = {\n /**\n * An array of assets to display in the gallery.\n */\n asset: PropTypes.shape(assetShapeWithLayout).isRequired,\n\n /**\n * Whether or not the asset gallery should have selectable asset cards\n */\n selectable: PropTypes.bool,\n\n /**\n * Is the asset selected\n */\n selected: PropTypes.bool,\n\n /**\n * Whether or not the asset gallery should have custom borders on selected asset\n */\n customSelectedBorder: PropTypes.arrayOf(PropTypes.string),\n\n /**\n * Makes the whole asset card into a selectable area\n */\n extendedSelectMode: PropTypes.bool,\n\n /**\n * The callback function when an asset is selected - returns the selected asset key\n */\n onAssetSelected: PropTypes.func.isRequired,\n\n /**\n * The callback function when an asset is unselected - returns the unselected asset key\n */\n onAssetUnselected: PropTypes.func.isRequired,\n\n /**\n * Is the asset soft selected\n */\n softSelected: PropTypes.bool.isRequired,\n\n /**\n * A function that returns a custom component to use for the card in the gallery - The function provides\n * `asset` as its first argument\n */\n component: PropTypes.func,\n\n /**\n * Internal prop used by the gallery to determine if the card is in the viewport - This prop is\n * not intended to be used by consumers\n */\n scrollPosition: PropTypes.number\n};\n\nAssetGalleryGridCard.defaultProps = {};\n\nexport default trackWindowScroll(\n React.memo(AssetGalleryGridCard, (prevProps, nextProps) => {\n // The asset card will only re-render if any of the following props change.\n const reactiveProps = [\n 'selectable',\n 'selected',\n 'extendedSelectMode',\n 'softSelected',\n 'asset.previewUrl',\n 'asset.overlay',\n 'asset.statusIcon',\n 'asset.layout',\n 'asset.imageRights',\n 'asset.instructionSeverity',\n 'asset.description',\n 'asset.title'\n ];\n\n return reactiveProps.every(propKey => get(prevProps, propKey) === get(nextProps, propKey));\n })\n);\n"],"names":["ComputedRootComponent","component","asset","props","newProps","mapKeys","omit","_","key","isFunction","Error","React","isValidElement","children","cloneElement","createElement","S","_extends","ref","ComputedActionButton","forwardRef","className","subActions","isSubActionsOpened","forwardedRef","isEmpty","contextMenuItems","map","subAction","onClick","title","icon","ContextMenuItem","onClickEffect","contextMenu","ContextMenu","Popover","content","placement","visible","zIndex","offset","ActionButton","useShadow","active","backgroundColors","actionWidthHeight","Fragment","AssetGalleryGridCard","selectable","selected","customSelectedBorder","extendedSelectMode","onAssetSelected","onAssetUnselected","softSelected","scrollPosition","isCardHovered","setIsCardHovered","useState","openedSubActions","updateOpenedSubActions","useEffect","newOpenedSubActions","actions","length","mouseHasEnteredCard","useCallback","mouseHasLeftCard","onSubActionsViewToggle","actionIndex","isOpened","index","videoPlayerRef","useRef","cardRef","dragRef","onMouseEnter","event","current","playPromise","play","undefined","then","catch","onMouseLeave","pause","onSelectClick","preventDefault","stopPropagation","onActionClick","action","shouldOpenSubActions","onContextMenu","renderPreview","previewContent","fileType","toLowerCase","LazyLoadComponent","loop","muted","src","previewUrl","type","HeadsetIcon","LazyLoadImage","alt","height","width","delayMethod","delayTime","threshold","addEventListener","removeEventListener","onDragstart","scrollIntoView","behavior","block","renderVersionsBadge","versions","Badge","badgeIcon","LayersIcon","badgeContent","colors","fontSize","fontWeight","lineHeight","verticalPadding","horizontalPadding","renderMediaBadge","PlayIcon","duration","convertMsToHMS","minWidth","renderThumbnail","overlay","statusIcon","Tooltip","renderDetails","description","$hasContent","Boolean","imageRights","InstructionSeverityDisplay","labels","instructionLabels","instructionText","severity","instructionSeverity","showCard","padding","detailsFontSize","bgLight","bgDark","maxLines","renderConsentSummaryInfo","summary","footerLeft","footerRight","renderCheckboxRow","Checkbox","variant","checked","onChange","target","disabled","as","draggable","innerRef","$softSelected","completed","$hasError","hasError","$customSelectedBorder","propTypes","process","env","NODE_ENV","PropTypes","shape","assetShapeWithLayout","isRequired","bool","arrayOf","string","func","number","defaultProps","trackWindowScroll","memo","prevProps","nextProps","reactiveProps","every","propKey","get"],"mappings":"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"}
1
+ {"version":3,"file":"AssetGalleryGridCard.js","sources":["../../../../../src/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryGridCard/AssetGalleryGridCard.js"],"sourcesContent":["import { get, isEmpty, isFunction, mapKeys, omit } from 'lodash';\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useRef } from 'react';\nimport {\n LazyLoadComponent,\n LazyLoadImage,\n trackWindowScroll\n} from 'react-lazy-load-image-component';\nimport { HeadsetIcon, LayersIcon, PlayIcon } from '../../../../../icons';\nimport { convertMsToHMS } from '../../../../../utils/dateTime';\nimport { Badge, Popover, Tooltip } from '../../../../data';\nimport { ActionButton, Checkbox } from '../../../../inputs';\nimport ContextMenu from '../../../ContextMenu/ContextMenu';\nimport ContextMenuItem from '../../../ContextMenu/ContextMenuItem/ContextMenuItem';\nimport { assetShapeWithLayout } from '../../asset.propType';\nimport * as S from './AssetGalleryGridCard.styled';\nimport InstructionSeverityDisplay from '../../../InstructionSeverityDisplay';\n\n/**\n >>> Section 1: renderThumbnail():\n┌─────────────────────────────────────────┐ ← S.AssetGalleryGridCard (Root)\n│[renderversionsBadge] [severityIcon]│ ← S.HorizontalBar (Top)\n├─────────────────────────────────────────┤\n│ │ │ │\n│ (spacer) │ [renderPreview]│ [action]│ ← S.ThumbnailRow (Inc. ComputedActionButton)\n│ │ │ [action]│ ← S.ActionsContainer\n│ │ │ │\n├─────────────────────────────────────────┤\n│ [renderMediaBadge] │ ← S.HorizontalBar (Bottom)\n├─────────────────────────────────────────┤\n│ | >>> Section 2: renderDetails():\n│ [asset.title] │ ← S.CardTitle\n│ [asset.description] │ ← S.CardDescription\n├─────────────────────────────────────────┤\n│ [InstructionSeverityDisplay] │ ← S.InstructionsWrapper\n| |\n| | >>> Section 3:renderConsentSummaryInfo():\n├─────────────────────────────────────────┤ ← S.CardDivider\n│ [footerLeft] [footerRight] │ ← S.CardFooter\n├─────────────────────────────────────────┤ ← S.CardDivider\n| |\n│ | >>> Section 4:renderCheckboxRow():\n│ [CheckRectangleIcon / Outline] │ ← S.CheckboxRow\n└─────────────────────────────────────────┘\n Approx Height: 536px (Updated severity card takes more space than XD Design)\n Note: Every block renders ALWAYS to maintain same height+alignment in gallery\n */\n\n// eslint-disable-next-line react/prop-types\nconst ComputedRootComponent = ({ component, asset, ...props }) => {\n // Omit props we don't need\n const newProps = mapKeys(\n omit(props, [\n 'theme',\n 'extendedSelectMode',\n 'softSelected',\n '$softSelected',\n 'customSelectedBorder',\n '$customSelectedBorder',\n 'isCardHovered',\n '$isCardHovered',\n 'completed',\n '$hasError'\n ]),\n (_, key) => (key === 'innerRef' ? 'ref' : key)\n );\n\n if (component) {\n if (!isFunction(component)) throw Error('Expected a function in component-prop');\n\n if (React.isValidElement(component(asset, newProps.children))) {\n return React.cloneElement(component(asset, newProps.children), omit(newProps, ['children']));\n }\n }\n\n const { ref, ...rest } = newProps;\n return <div ref={ref} {...rest} />;\n};\n\n/* eslint-disable react/prop-types */\nconst ComputedActionButton = React.forwardRef(function ComputedActionButton(\n // eslint-disable-next-line react/prop-types\n { component, className, subActions = [], isSubActionsOpened, ...props },\n forwardedRef\n) {\n const newProps = props;\n if (!isEmpty(subActions)) {\n const contextMenuItems = subActions.map((subAction, key) => {\n const { onClick, title, icon } = subAction;\n return <ContextMenuItem key={key} onClickEffect={onClick} title={title} icon={icon} />;\n });\n const contextMenu = <ContextMenu>{contextMenuItems}</ContextMenu>;\n newProps.children = (\n <Popover\n contextMenu={true}\n content={contextMenu}\n placement={'bottom-end'}\n visible={isSubActionsOpened}\n zIndex={10001}\n offset={[0, -8]}\n >\n <ActionButton\n useShadow={false}\n active={true}\n ref={forwardedRef}\n className={className}\n icon={newProps.icon}\n backgroundColors={['black', 'white']}\n onClick={newProps.onClick}\n actionWidthHeight={[40, 40]}\n />\n </Popover>\n );\n } else {\n newProps.children = (\n <ActionButton\n useShadow={false}\n active={true}\n ref={forwardedRef}\n className={className}\n icon={newProps.icon}\n onClick={newProps.onClick}\n backgroundColors={['black', 'white']}\n actionWidthHeight={[40, 40]}\n />\n );\n }\n\n if (component) {\n if (!isFunction(component)) throw Error('Expected a function in component-prop');\n\n if (React.isValidElement(component())) {\n return React.cloneElement(component(), { ...omit(newProps, 'icon') });\n }\n }\n\n return <React.Fragment>{newProps.children}</React.Fragment>;\n});\n/* eslint-disable react/prop-types */\n\nconst AssetGalleryGridCard = props => {\n const {\n asset,\n selectable,\n selected,\n customSelectedBorder,\n extendedSelectMode,\n onAssetSelected,\n onAssetUnselected,\n softSelected,\n component,\n scrollPosition,\n hideConsentSummary\n } = props;\n\n const [isCardHovered, setIsCardHovered] = React.useState(false);\n const [openedSubActions, updateOpenedSubActions] = React.useState([]);\n useEffect(() => {\n const newOpenedSubActions = (asset?.actions ?? []).map(() => false);\n updateOpenedSubActions(newOpenedSubActions);\n }, [asset]);\n\n useEffect(() => {\n if (!isCardHovered && openedSubActions?.length) {\n updateOpenedSubActions(openedSubActions.map(() => false));\n }\n }, [isCardHovered]);\n\n const mouseHasEnteredCard = useCallback(() => {\n setIsCardHovered(true);\n }, []);\n\n const mouseHasLeftCard = useCallback(() => {\n setIsCardHovered(false);\n }, []);\n\n const onSubActionsViewToggle = useCallback(\n actionIndex => {\n const newOpenedSubActions = openedSubActions.map((isOpened, index) => {\n if (index !== actionIndex) {\n return false;\n }\n return !isOpened;\n });\n updateOpenedSubActions(newOpenedSubActions);\n },\n [openedSubActions]\n );\n\n const videoPlayerRef = useRef();\n const cardRef = useRef();\n const dragRef = useRef(null);\n\n function onMouseEnter(event) {\n if (videoPlayerRef.current) {\n const playPromise = videoPlayerRef.current.play();\n if (playPromise !== undefined) {\n playPromise\n .then(() => {\n // Playback started!\n })\n .catch(() => {\n // Play was prevented - silently swallow play errors\n });\n }\n }\n\n if (isFunction(asset.onMouseEnter)) {\n asset.onMouseEnter(event, asset);\n }\n\n mouseHasEnteredCard();\n }\n\n function onMouseLeave() {\n if (videoPlayerRef.current) {\n videoPlayerRef.current.pause();\n }\n\n mouseHasLeftCard();\n }\n\n function onClick(event) {\n if (extendedSelectMode) {\n return onSelectClick(event);\n }\n\n if (isFunction(asset.onClick)) {\n asset.onClick(event, asset);\n }\n }\n\n function onSelectClick(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (selected) {\n return onAssetUnselected(asset.key);\n }\n\n return onAssetSelected(asset.key);\n }\n\n const onActionClick = useCallback(\n (event, action, index) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (isFunction(action?.onClick)) {\n action.onClick(asset);\n }\n\n if (!isEmpty(action?.subActions)) {\n onSubActionsViewToggle(index);\n }\n },\n [onSubActionsViewToggle]\n );\n\n const shouldOpenSubActions = useCallback(\n actionIndex => openedSubActions[actionIndex],\n [openedSubActions]\n );\n\n function onContextMenu(event) {\n event.preventDefault();\n asset.onContextMenu(event);\n }\n\n function renderPreview(asset) {\n let previewContent = null;\n\n if (asset.fileType?.toLowerCase() === 'video') {\n previewContent = (\n <LazyLoadComponent scrollPosition={scrollPosition}>\n <video ref={videoPlayerRef} loop muted>\n <source src={asset.previewUrl} type=\"video/mp4\" />\n </video>\n </LazyLoadComponent>\n );\n } else if (asset.fileType?.toLowerCase() === 'audio') {\n previewContent = (\n <LazyLoadComponent scrollPosition={scrollPosition}>\n <div className=\"audio\">\n <HeadsetIcon />\n </div>\n </LazyLoadComponent>\n );\n } else {\n previewContent = (\n <LazyLoadImage\n alt={asset.title}\n src={asset.previewUrl}\n height=\"100%\"\n width=\"100%\"\n delayMethod=\"debounce\"\n delayTime={0}\n threshold={1500}\n scrollPosition={scrollPosition}\n />\n );\n }\n\n return previewContent;\n }\n\n useEffect(() => {\n if (isFunction(asset.onContextMenu)) {\n if (cardRef.current) {\n cardRef.current.addEventListener('contextmenu', onContextMenu);\n }\n return () => {\n if (cardRef.current) {\n cardRef.current.removeEventListener('contextmenu', onContextMenu);\n }\n };\n }\n }, []);\n\n function onDragstart(event) {\n asset.onDragstart(event);\n }\n\n useEffect(() => {\n if (isFunction(asset.onDragstart)) {\n if (dragRef.current) {\n dragRef.current.addEventListener('dragstart', onDragstart);\n }\n return () => {\n if (dragRef.current) {\n dragRef.current.removeEventListener('dragstart', onDragstart);\n }\n };\n }\n }, []);\n\n // If this asset is soft selected we will scroll it into the viewport if it's outside\n useEffect(() => {\n if (softSelected) {\n cardRef.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }, [softSelected]);\n\n const renderVersionsBadge = useCallback(() => {\n if (!asset?.versions) return null;\n\n return (\n <Badge\n badgeIcon={<LayersIcon />}\n badgeContent={asset.versions}\n backgroundColors={['black', 'black']}\n colors={['#f7f8f9', '#f7f8f9']}\n fontSize={12}\n fontWeight={500}\n lineHeight={16}\n verticalPadding={4}\n horizontalPadding={8}\n />\n );\n }, [asset]);\n\n const renderMediaBadge = useCallback(() => {\n let badgeIcon = null;\n let badgeContent = null;\n\n if (asset?.fileType === 'video') {\n badgeIcon = <PlayIcon />;\n }\n\n if (asset?.duration) {\n badgeContent = convertMsToHMS(asset.duration);\n }\n\n if (!badgeIcon && !badgeContent) return null;\n return (\n <Badge\n badgeIcon={badgeIcon}\n badgeContent={badgeContent}\n backgroundColors={['black', 'black']}\n colors={['#f7f8f9', '#f7f8f9']}\n fontSize={12}\n fontWeight={500}\n lineHeight={16}\n verticalPadding={4}\n horizontalPadding={8}\n minWidth={32}\n height={24}\n />\n );\n }, [asset]);\n\n const renderThumbnail = () => {\n return (\n <S.ThumbnailSection>\n <S.ThumbnailSelectedOverlay selected={selected} />\n {asset.overlay && <S.ConsumerOverlay>{asset.overlay}</S.ConsumerOverlay>}\n {/* Thumbnail Top bar */}\n <S.HorizontalBar>\n <S.HorizontalBarLeft>{renderVersionsBadge()}</S.HorizontalBarLeft>\n <S.HorizontalBarRight>\n {asset.statusIcon && <S.StatusIconCircle>{asset.statusIcon}</S.StatusIconCircle>}\n </S.HorizontalBarRight>\n </S.HorizontalBar>\n <S.ThumbnailRow>\n <S.ThumbnailSpacer />\n {/* Thumbnail */}\n <S.ThumbnailWrapper>\n <S.ThumbnailBox>{renderPreview(asset)}</S.ThumbnailBox>\n </S.ThumbnailWrapper>\n <S.ThumbnailActions>\n <S.ActionsContainer>\n {(asset.actions ?? []).map((action, index) => (\n <Tooltip key={`${asset.key}-${action.title}`} content={action.title}>\n <S.Action>\n <ComputedActionButton\n component={action.component}\n className={action.className}\n icon={action.icon}\n isSubActionsOpened={shouldOpenSubActions(index)}\n onClick={event => onActionClick(event, action, index)}\n subActions={action?.subActions}\n actionWidthHeight={action.actionWidthHeight}\n />\n </S.Action>\n </Tooltip>\n ))}\n </S.ActionsContainer>\n </S.ThumbnailActions>\n </S.ThumbnailRow>\n {/* Thumbnail Bottom bar */}\n <S.HorizontalBar>\n <S.HorizontalBarLeft></S.HorizontalBarLeft>\n <S.HorizontalBarRight>{renderMediaBadge()}</S.HorizontalBarRight>\n </S.HorizontalBar>\n </S.ThumbnailSection>\n );\n };\n\n const renderDetails = () => {\n return (\n <S.CardBody>\n <S.CardTitle title={asset.title || ''}>{asset.title || ''}</S.CardTitle>\n <S.CardDescription title={asset.description || ''}>\n {asset.description || ''}\n </S.CardDescription>\n <S.InstructionsWrapper $hasContent={Boolean(asset.imageRights?.toString().trim())}>\n {asset.imageRights && (\n <InstructionSeverityDisplay\n labels={asset.instructionLabels}\n instructionText={asset.imageRights}\n severity={asset.instructionSeverity}\n showCard={false}\n padding=\"16px\"\n detailsFontSize=\"12px\"\n bgLight=\"transparent\"\n bgDark=\"transparent\"\n maxLines={2}\n />\n )}\n </S.InstructionsWrapper>\n </S.CardBody>\n );\n };\n\n const renderConsentSummaryInfo = () => {\n return (\n <>\n <S.CardFooter>\n <S.CardFooterLeft>{asset.summary?.footerLeft || null}</S.CardFooterLeft>\n <S.CardFooterRight>{asset.summary?.footerRight || null}</S.CardFooterRight>\n </S.CardFooter>\n <S.CardDivider />\n </>\n );\n };\n\n const renderCheckboxRow = () => {\n return (\n <S.CheckboxRow>\n {selectable && (\n <div onClick={onSelectClick}>\n <Checkbox\n variant=\"black\"\n checked={selected}\n onChange={event => {\n if (event.target.checked) {\n onAssetSelected(asset.key);\n } else {\n onAssetUnselected(asset.key);\n }\n }}\n />\n </div>\n )}\n </S.CheckboxRow>\n );\n };\n\n return (\n <S.AssetGalleryWrapper disabled={asset.disabled} ref={cardRef}>\n <S.AssetGalleryGridCard\n as={ComputedRootComponent}\n component={component}\n asset={asset}\n disabled={asset.disabled}\n onClick={onClick}\n extendedSelectMode={extendedSelectMode}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n draggable={asset.draggable}\n innerRef={dragRef}\n selected={selected}\n $softSelected={softSelected}\n completed={asset?.completed}\n $hasError={asset?.hasError}\n $customSelectedBorder={customSelectedBorder}\n >\n {renderThumbnail()}\n {renderDetails()}\n {!hideConsentSummary && renderConsentSummaryInfo()}\n {renderCheckboxRow()}\n </S.AssetGalleryGridCard>\n </S.AssetGalleryWrapper>\n );\n};\n\nAssetGalleryGridCard.propTypes = {\n /**\n * An array of assets to display in the gallery.\n */\n asset: PropTypes.shape(assetShapeWithLayout).isRequired,\n\n /**\n * Whether or not the asset gallery should have selectable asset cards\n */\n selectable: PropTypes.bool,\n\n /**\n * Is the asset selected\n */\n selected: PropTypes.bool,\n\n /**\n * Whether or not the asset gallery should have custom borders on selected asset\n */\n customSelectedBorder: PropTypes.arrayOf(PropTypes.string),\n\n /**\n * Makes the whole asset card into a selectable area\n */\n extendedSelectMode: PropTypes.bool,\n\n /**\n * The callback function when an asset is selected - returns the selected asset key\n */\n onAssetSelected: PropTypes.func.isRequired,\n\n /**\n * The callback function when an asset is unselected - returns the unselected asset key\n */\n onAssetUnselected: PropTypes.func.isRequired,\n\n /**\n * Is the asset soft selected\n */\n softSelected: PropTypes.bool.isRequired,\n\n /**\n * A function that returns a custom component to use for the card in the gallery - The function provides\n * `asset` as its first argument\n */\n component: PropTypes.func,\n\n /**\n * Internal prop used by the gallery to determine if the card is in the viewport - This prop is\n * not intended to be used by consumers\n */\n scrollPosition: PropTypes.number,\n\n /**\n * When true, hides the consent summary footer (CardFooter + CardDivider). Default: false.\n */\n hideConsentSummary: PropTypes.bool\n};\n\nAssetGalleryGridCard.defaultProps = {};\n\nexport default trackWindowScroll(\n React.memo(AssetGalleryGridCard, (prevProps, nextProps) => {\n // The asset card will only re-render if any of the following props change.\n const reactiveProps = [\n 'selectable',\n 'selected',\n 'extendedSelectMode',\n 'softSelected',\n 'asset.previewUrl',\n 'asset.overlay',\n 'asset.statusIcon',\n 'asset.layout',\n 'asset.imageRights',\n 'asset.instructionSeverity',\n 'asset.description',\n 'asset.title'\n ];\n\n return reactiveProps.every(propKey => get(prevProps, propKey) === get(nextProps, propKey));\n })\n);\n"],"names":["ComputedRootComponent","component","asset","props","newProps","mapKeys","omit","_","key","isFunction","Error","React","isValidElement","children","cloneElement","ref","rest","createElement","_extends","ComputedActionButton","forwardRef","className","subActions","isSubActionsOpened","forwardedRef","isEmpty","contextMenuItems","map","subAction","onClick","title","icon","ContextMenuItem","onClickEffect","contextMenu","ContextMenu","Popover","content","placement","visible","zIndex","offset","ActionButton","useShadow","active","backgroundColors","actionWidthHeight","Fragment","AssetGalleryGridCard","selectable","selected","customSelectedBorder","extendedSelectMode","onAssetSelected","onAssetUnselected","softSelected","scrollPosition","hideConsentSummary","isCardHovered","setIsCardHovered","useState","openedSubActions","updateOpenedSubActions","useEffect","newOpenedSubActions","actions","length","mouseHasEnteredCard","useCallback","mouseHasLeftCard","onSubActionsViewToggle","actionIndex","isOpened","index","videoPlayerRef","useRef","cardRef","dragRef","onMouseEnter","event","current","playPromise","play","undefined","then","catch","onMouseLeave","pause","onSelectClick","preventDefault","stopPropagation","onActionClick","action","shouldOpenSubActions","onContextMenu","renderPreview","previewContent","fileType","toLowerCase","LazyLoadComponent","loop","muted","src","previewUrl","type","HeadsetIcon","LazyLoadImage","alt","height","width","delayMethod","delayTime","threshold","addEventListener","removeEventListener","onDragstart","scrollIntoView","behavior","block","renderVersionsBadge","versions","Badge","badgeIcon","LayersIcon","badgeContent","colors","fontSize","fontWeight","lineHeight","verticalPadding","horizontalPadding","renderMediaBadge","PlayIcon","duration","convertMsToHMS","minWidth","renderThumbnail","S","overlay","statusIcon","Tooltip","renderDetails","description","$hasContent","Boolean","imageRights","toString","trim","InstructionSeverityDisplay","labels","instructionLabels","instructionText","severity","instructionSeverity","showCard","padding","detailsFontSize","bgLight","bgDark","maxLines","renderConsentSummaryInfo","summary","footerLeft","footerRight","renderCheckboxRow","Checkbox","variant","checked","onChange","target","disabled","as","draggable","innerRef","$softSelected","completed","$hasError","hasError","$customSelectedBorder","propTypes","process","env","NODE_ENV","PropTypes","shape","assetShapeWithLayout","isRequired","bool","arrayOf","string","func","number","defaultProps","trackWindowScroll","memo","prevProps","nextProps","reactiveProps","every","propKey","get"],"mappings":"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"}
@@ -6,35 +6,6 @@ const darkBorderColor = '#52525B';
6
6
  const darkBgColor = '#27272A';
7
7
  const darkHoverBgColor = '#3F3F46';
8
8
  const lightHoverBgColor = '#E4E4E7';
9
- const ACTIVE_RING_WIDTH = '3px';
10
- const IDLE_RING_WIDTH = '1px';
11
- const getRing = props => {
12
- const active = (dark, light) => ({
13
- width: ACTIVE_RING_WIDTH,
14
- dark,
15
- light
16
- });
17
- if (props.$softSelected) {
18
- return active(rgba(props.theme.getColor('gray-100'), 0.5), rgba(props.theme.getColor('gray-700'), 0.5));
19
- }
20
- if (props.selected) {
21
- if (props.$customSelectedBorder) {
22
- return active(props.$customSelectedBorder[0], props.$customSelectedBorder[1]);
23
- }
24
- return active(props.theme.getColor('gray-100'), darkBorderColor);
25
- }
26
- if (props.completed) {
27
- return active(props.theme.getColor('emerald-500'), rgba(props.theme.getColor('emerald-500'), 0.7));
28
- }
29
- if (props.hasError) {
30
- return active(props.theme.getColor('red-600'), rgba(props.theme.getColor('red-500'), 0.7));
31
- }
32
- return {
33
- width: IDLE_RING_WIDTH,
34
- dark: darkBorderColor,
35
- light: props.theme.getColor('gray-300')
36
- };
37
- };
38
9
  const AssetGalleryWrapper = styled.div.attrs(applyDefaultTheme)`
39
10
  width: 100%;
40
11
  height: 100%;
@@ -42,7 +13,24 @@ const AssetGalleryWrapper = styled.div.attrs(applyDefaultTheme)`
42
13
  cursor: not-allowed;
43
14
  `};
44
15
  `;
45
- const AssetGalleryGridCard = styled.div.attrs(applyDefaultTheme)`
16
+ const ringState = props => {
17
+ if (props.$softSelected) return 'soft';
18
+ if (props.selected) return props.$customSelectedBorder ? 'custom' : 'selected';
19
+ if (props.completed) return 'completed';
20
+ if (props.$hasError) return 'error';
21
+ return 'idle';
22
+ };
23
+ const AssetGalleryGridCard = styled.div.attrs(props => ({
24
+ ...applyDefaultTheme(props),
25
+ 'data-ring': ringState(props),
26
+ style: {
27
+ ...(props.style || {}),
28
+ ...(props.$customSelectedBorder && props.selected ? {
29
+ '--ring-dark': props.$customSelectedBorder[0],
30
+ '--ring-light': props.$customSelectedBorder[1]
31
+ } : {})
32
+ }
33
+ }))`
46
34
  display: block;
47
35
  position: relative;
48
36
  height: 100%;
@@ -66,32 +54,107 @@ const AssetGalleryGridCard = styled.div.attrs(applyDefaultTheme)`
66
54
  &:hover {
67
55
  box-shadow: 0px 3px 6px #00000029;
68
56
  }
57
+
58
+ &::after {
59
+ content: '';
60
+ position: absolute;
61
+ inset: 0;
62
+ pointer-events: none;
63
+ box-sizing: border-box;
64
+ z-index: 10;
65
+ border-style: solid;
66
+ border-width: 1px;
67
+ }
68
+ &[data-ring='soft']::after,
69
+ &[data-ring='selected']::after,
70
+ &[data-ring='custom']::after,
71
+ &[data-ring='completed']::after,
72
+ &[data-ring='error']::after {
73
+ border-width: 3px;
74
+ }
75
+
69
76
  ${props => {
70
- const {
71
- width,
72
- dark,
73
- light
74
- } = getRing(props);
77
+ const gray100 = props.theme.getColor('gray-100');
78
+ const gray300 = props.theme.getColor('gray-300');
79
+ const gray700 = props.theme.getColor('gray-700');
80
+ const emerald = props.theme.getColor('emerald-500');
81
+ const red500 = props.theme.getColor('red-500');
82
+ const red600 = props.theme.getColor('red-600');
75
83
  return css`
76
- &::after {
77
- content: '';
78
- position: absolute;
79
- inset: 0;
80
- pointer-events: none;
81
- box-sizing: border-box;
82
- z-index: 10;
83
- border: ${width} solid ${light};
84
+ &[data-ring='idle']::after {
85
+ border-color: ${gray300};
86
+ }
87
+ &[data-ring='soft']::after {
88
+ border-color: ${rgba(gray700, 0.5)};
89
+ }
90
+ &[data-ring='selected']::after {
91
+ border-color: ${darkBorderColor};
84
92
  }
93
+ &[data-ring='custom']::after {
94
+ border-color: var(--ring-light);
95
+ }
96
+ &[data-ring='completed']::after {
97
+ border-color: ${rgba(emerald, 0.7)};
98
+ }
99
+ &[data-ring='error']::after {
100
+ border-color: ${rgba(red500, 0.7)};
101
+ }
102
+
85
103
  @media (prefers-color-scheme: dark) {
86
- &::after {
87
- border-color: ${dark};
104
+ &[data-ring='idle']::after {
105
+ border-color: ${darkBorderColor};
88
106
  }
107
+ &[data-ring='soft']::after {
108
+ border-color: ${rgba(gray100, 0.5)};
109
+ }
110
+ &[data-ring='selected']::after {
111
+ border-color: ${gray100};
112
+ }
113
+ &[data-ring='custom']::after {
114
+ border-color: var(--ring-dark);
115
+ }
116
+ &[data-ring='completed']::after {
117
+ border-color: ${emerald};
118
+ }
119
+ &[data-ring='error']::after {
120
+ border-color: ${red600};
121
+ }
122
+ }
123
+ body.light-theme &[data-ring='idle']::after {
124
+ border-color: ${gray300};
125
+ }
126
+ body.light-theme &[data-ring='soft']::after {
127
+ border-color: ${rgba(gray700, 0.5)};
128
+ }
129
+ body.light-theme &[data-ring='selected']::after {
130
+ border-color: ${darkBorderColor};
131
+ }
132
+ body.light-theme &[data-ring='custom']::after {
133
+ border-color: var(--ring-light);
89
134
  }
90
- body.light-theme &::after {
91
- border-color: ${light};
135
+ body.light-theme &[data-ring='completed']::after {
136
+ border-color: ${rgba(emerald, 0.7)};
92
137
  }
93
- body.dark-theme &::after {
94
- border-color: ${dark};
138
+ body.light-theme &[data-ring='error']::after {
139
+ border-color: ${rgba(red500, 0.7)};
140
+ }
141
+ body.dark-theme &[data-ring='idle']::after {
142
+ border-color: ${darkBorderColor};
143
+ }
144
+ body.dark-theme &[data-ring='soft']::after {
145
+ border-color: ${rgba(gray100, 0.5)};
146
+ }
147
+ body.dark-theme &[data-ring='selected']::after {
148
+ border-color: ${gray100};
149
+ }
150
+ body.dark-theme &[data-ring='custom']::after {
151
+ border-color: var(--ring-dark);
152
+ }
153
+ body.dark-theme &[data-ring='completed']::after {
154
+ border-color: ${emerald};
155
+ }
156
+ body.dark-theme &[data-ring='error']::after {
157
+ border-color: ${red600};
95
158
  }
96
159
  `;
97
160
  }};
@@ -267,14 +330,16 @@ const InstructionsWrapper = styled.div.attrs(applyDefaultTheme)`
267
330
  box-sizing: border-box;
268
331
  flex-shrink: 0;
269
332
  transition: background 220ms;
270
-
333
+ opacity: 0;
271
334
  ${props => props.$hasContent && css`
335
+ opacity: 1;
272
336
  border-top: 0.56px solid;
273
337
  border-bottom: 0.56px solid;
274
338
  ${props.theme.themeProp('border-color', darkBorderColor, props.theme.getColor('gray-300'))}
275
339
  `}
276
340
 
277
341
  ${props => props.$hasContent && css`
342
+ opacity: 1;
278
343
  ${props.theme.themeProp('background', darkBgColor, props.theme.getColor('gray-50'))}
279
344
  ${AssetGalleryGridCard}:hover & {
280
345
  ${props.theme.themeProp('background', darkHoverBgColor, lightHoverBgColor, 1)}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetGalleryGridCard.styled.js","sources":["../../../../../src/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryGridCard/AssetGalleryGridCard.styled.js"],"sourcesContent":["import { rgba } from 'polished';\nimport styled, { css } from 'styled-components';\nimport { applyDefaultTheme } from '../../../../../utils/defaultTheme';\n\nconst darkBorderColor = '#52525B';\nconst darkBgColor = '#27272A';\nconst darkHoverBgColor = '#3F3F46';\nconst lightHoverBgColor = '#E4E4E7';\n\nconst ACTIVE_RING_WIDTH = '3px';\nconst IDLE_RING_WIDTH = '1px';\n\nconst getRing = props => {\n const active = (dark, light) => ({ width: ACTIVE_RING_WIDTH, dark, light });\n\n if (props.$softSelected) {\n return active(\n rgba(props.theme.getColor('gray-100'), 0.5),\n rgba(props.theme.getColor('gray-700'), 0.5)\n );\n }\n if (props.selected) {\n if (props.$customSelectedBorder) {\n return active(props.$customSelectedBorder[0], props.$customSelectedBorder[1]);\n }\n return active(props.theme.getColor('gray-100'), darkBorderColor);\n }\n if (props.completed) {\n return active(\n props.theme.getColor('emerald-500'),\n rgba(props.theme.getColor('emerald-500'), 0.7)\n );\n }\n if (props.hasError) {\n return active(props.theme.getColor('red-600'), rgba(props.theme.getColor('red-500'), 0.7));\n }\n return { width: IDLE_RING_WIDTH, dark: darkBorderColor, light: props.theme.getColor('gray-300') };\n};\n\nexport const AssetGalleryWrapper = styled.div.attrs(applyDefaultTheme)`\n width: 100%;\n height: 100%;\n ${props =>\n props.disabled &&\n css`\n cursor: not-allowed;\n `};\n`;\n\nexport const AssetGalleryGridCard = styled.div.attrs(applyDefaultTheme)`\n display: block;\n position: relative;\n height: 100%;\n margin: 0;\n box-sizing: border-box;\n text-decoration: none;\n cursor: pointer;\n transition: box-shadow 220ms;\n overflow: hidden;\n ${props =>\n props.theme.themeProp(\n 'color',\n props.theme.getColor('gray-300'),\n props.theme.getColor('gray-700')\n )}\n\n ${props =>\n props.disabled &&\n css`\n pointer-events: none;\n opacity: 0.4;\n `};\n\n ${props =>\n props.extendedSelectMode &&\n css`\n cursor: pointer;\n `}\n\n &:hover {\n box-shadow: 0px 3px 6px #00000029;\n }\n ${props => {\n const { width, dark, light } = getRing(props);\n return css`\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n pointer-events: none;\n box-sizing: border-box;\n z-index: 10;\n border: ${width} solid ${light};\n }\n @media (prefers-color-scheme: dark) {\n &::after {\n border-color: ${dark};\n }\n }\n body.light-theme &::after {\n border-color: ${light};\n }\n body.dark-theme &::after {\n border-color: ${dark};\n }\n `;\n }};\n`;\n\nexport const ThumbnailSection = styled.div.attrs(applyDefaultTheme)`\n position: relative;\n overflow: hidden;\n transition: background 220ms;\n ${props => props.theme.themeProp('background', darkBgColor, props.theme.getColor('gray-50'))}\n ${AssetGalleryGridCard}:hover & {\n ${props => props.theme.themeProp('background', darkHoverBgColor, lightHoverBgColor, 1)}\n }\n`;\n\n// ── Top bar ──────────────────────────────────────────────────────────────────\n\nexport const HorizontalBar = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px;\n height: 40px;\n box-sizing: border-box;\n flex-shrink: 0;\n position: relative;\n z-index: 2;\n`;\n\nexport const HorizontalBarLeft = styled.div`\n display: flex;\n align-items: center;\n`;\n\nexport const HorizontalBarRight = styled.div`\n display: flex;\n align-items: center;\n`;\n\nexport const StatusIconCircle = styled.span.attrs(applyDefaultTheme)`\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n pointer-events: none;\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\n// ── Thumbnail ─────────────────────────────────────────────────────────────────\n\nexport const ThumbnailRow = styled.div`\n position: relative;\n display: flex;\n width: 100%;\n`;\n\nexport const ThumbnailSpacer = styled.div`\n flex: 1;\n`;\n\nexport const ThumbnailWrapper = styled.div`\n width: max(66%, 268px);\n flex-shrink: 0;\n`;\n\nexport const ThumbnailBox = styled.div.attrs(applyDefaultTheme)`\n position: relative;\n height: 168px;\n\n flex-shrink: 0;\n overflow: hidden;\n\n img,\n video {\n width: 100%;\n height: 100%;\n object-fit: contain;\n display: block;\n }\n\n .audio {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n width: 35%;\n ${props =>\n props.theme.themeProp(\n 'color',\n props.theme.getColor('gray-400'),\n props.theme.getColor('gray-400')\n )}\n }\n }\n`;\n\nexport const ThumbnailSelectedOverlay = styled.div.attrs(applyDefaultTheme)`\n position: absolute;\n inset: 0;\n pointer-events: none;\n opacity: ${props => (props.selected ? 0.6 : 0)};\n background-color: #accef7;\n transition: opacity 220ms;\n z-index: 1;\n`;\n\nexport const ThumbnailActions = styled.div`\n flex: 1;\n`;\n\nexport const ActionsContainer = styled.div.attrs(applyDefaultTheme)`\n display: flex;\n align-items: end;\n flex-direction: column;\n gap: 8px;\n opacity: 0;\n transition: opacity 220ms;\n z-index: 1;\n position: absolute;\n right: 8px;\n ${AssetGalleryGridCard}:hover & {\n opacity: 1;\n }\n\n ${AssetGalleryGridCard}:focus-within & {\n opacity: 1;\n }\n`;\n\nexport const Action = styled.div`\n margin: 0;\n\n button {\n box-shadow: 0px 3px 6px #00000033;\n }\n svg {\n width: 16px;\n height: 16px;\n max-height: unset;\n max-width: unset;\n }\n`;\n\nexport const ConsumerOverlay = styled.div`\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 1;\n`;\n\n// ── Card body ─────────────────────────────────────────────────────────────────\n\nexport const CardBody = styled.div.attrs(applyDefaultTheme)`\n display: flex;\n flex-direction: column;\n flex: 1;\n padding: 16px 0px 0px 0px;\n`;\n\nexport const CardTitle = styled.span.attrs(applyDefaultTheme)`\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0px 16px;\n font: normal normal 500 14px/19px Roboto;\n letter-spacing: 0.28px;\n height: 19px;\n box-sizing: border-box;\n\n ${props =>\n props.theme.themeProp('color', props.theme.getColor('white'), props.theme.getColor('gray-700'))}\n`;\n\nexport const CardDescription = styled.span.attrs(applyDefaultTheme)`\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 6px 16px;\n font: normal normal normal 12px/1.286em Roboto;\n letter-spacing: 0.24px;\n height: 52px;\n box-sizing: border-box;\n overflow-wrap: break-word;\n word-break: break-word;\n\n ${props =>\n props.theme.themeProp('color', props.theme.getColor('white'), props.theme.getColor('gray-700'))}\n`;\n\nexport const InstructionsWrapper = styled.div.attrs(applyDefaultTheme)`\n min-height: 96px;\n margin-top: 16px;\n box-sizing: border-box;\n flex-shrink: 0;\n transition: background 220ms;\n\n ${props =>\n props.$hasContent &&\n css`\n border-top: 0.56px solid;\n border-bottom: 0.56px solid;\n ${props.theme.themeProp('border-color', darkBorderColor, props.theme.getColor('gray-300'))}\n `}\n\n ${props =>\n props.$hasContent &&\n css`\n ${props.theme.themeProp('background', darkBgColor, props.theme.getColor('gray-50'))}\n ${AssetGalleryGridCard}:hover & {\n ${props.theme.themeProp('background', darkHoverBgColor, lightHoverBgColor, 1)}\n }\n `}\n`;\n\nexport const CardFooter = styled.div.attrs(applyDefaultTheme)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0px 16px;\n min-height: 52px;\n box-sizing: border-box;\n`;\n\nexport const CardFooterLeft = styled.div`\n display: flex;\n align-items: center;\n > * {\n margin-right: 4px;\n }\n`;\n\nexport const CardFooterRight = styled.div`\n display: flex;\n align-items: center;\n > * {\n margin-left: 4px;\n }\n`;\n\nexport const CardDivider = styled.div.attrs(applyDefaultTheme)`\n height: 1px;\n flex-shrink: 0;\n opacity: ${props => (props.invisible ? 0 : 1)};\n ${props => props.theme.themeProp('background', darkBorderColor, props.theme.getColor('gray-300'))}\n`;\n\nexport const CheckboxRow = styled.div`\n display: flex;\n padding: 0px 16px;\n align-items: center;\n height: 56px;\n box-sizing: border-box;\n flex-shrink: 0;\n`;\n\nexport const CheckboxButton = styled.div.attrs(applyDefaultTheme)`\n opacity: 1;\n flex-shrink: 0;\n cursor: pointer;\n transition: opacity 220ms;\n ${props => props.theme.themeProp('color', 'white', 'black')}\n > svg {\n width: 23px;\n height: 100%;\n }\n`;\n"],"names":["darkBorderColor","darkBgColor","darkHoverBgColor","lightHoverBgColor","ACTIVE_RING_WIDTH","IDLE_RING_WIDTH","getRing","props","active","dark","light","width","$softSelected","rgba","theme","getColor","selected","$customSelectedBorder","completed","hasError","AssetGalleryWrapper","styled","div","attrs","applyDefaultTheme","disabled","css","AssetGalleryGridCard","themeProp","extendedSelectMode","ThumbnailSection","HorizontalBar","HorizontalBarLeft","HorizontalBarRight","StatusIconCircle","span","ThumbnailRow","ThumbnailSpacer","ThumbnailWrapper","ThumbnailBox","ThumbnailSelectedOverlay","ThumbnailActions","ActionsContainer","Action","ConsumerOverlay","CardBody","CardTitle","CardDescription","InstructionsWrapper","$hasContent","CardFooter","CardFooterLeft","CardFooterRight","CardDivider","invisible","CheckboxRow"],"mappings":"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"}
1
+ {"version":3,"file":"AssetGalleryGridCard.styled.js","sources":["../../../../../src/components/widgets/AssetGallery/AssetGalleryBase/AssetGalleryGridCard/AssetGalleryGridCard.styled.js"],"sourcesContent":["import { rgba } from 'polished';\nimport styled, { css } from 'styled-components';\nimport { applyDefaultTheme } from '../../../../../utils/defaultTheme';\n\nconst darkBorderColor = '#52525B';\nconst darkBgColor = '#27272A';\nconst darkHoverBgColor = '#3F3F46';\nconst lightHoverBgColor = '#E4E4E7';\n\nexport const AssetGalleryWrapper = styled.div.attrs(applyDefaultTheme)`\n width: 100%;\n height: 100%;\n ${props =>\n props.disabled &&\n css`\n cursor: not-allowed;\n `};\n`;\n\nconst ringState = props => {\n if (props.$softSelected) return 'soft';\n if (props.selected) return props.$customSelectedBorder ? 'custom' : 'selected';\n if (props.completed) return 'completed';\n if (props.$hasError) return 'error';\n return 'idle';\n};\n\nexport const AssetGalleryGridCard = styled.div.attrs(props => ({\n ...applyDefaultTheme(props),\n 'data-ring': ringState(props),\n style: {\n ...(props.style || {}),\n ...(props.$customSelectedBorder && props.selected\n ? {\n '--ring-dark': props.$customSelectedBorder[0],\n '--ring-light': props.$customSelectedBorder[1]\n }\n : {})\n }\n}))`\n display: block;\n position: relative;\n height: 100%;\n margin: 0;\n box-sizing: border-box;\n text-decoration: none;\n cursor: pointer;\n transition: box-shadow 220ms;\n overflow: hidden;\n ${props =>\n props.theme.themeProp(\n 'color',\n props.theme.getColor('gray-300'),\n props.theme.getColor('gray-700')\n )}\n\n ${props =>\n props.disabled &&\n css`\n pointer-events: none;\n opacity: 0.4;\n `};\n\n ${props =>\n props.extendedSelectMode &&\n css`\n cursor: pointer;\n `}\n\n &:hover {\n box-shadow: 0px 3px 6px #00000029;\n }\n\n &::after {\n content: '';\n position: absolute;\n inset: 0;\n pointer-events: none;\n box-sizing: border-box;\n z-index: 10;\n border-style: solid;\n border-width: 1px;\n }\n &[data-ring='soft']::after,\n &[data-ring='selected']::after,\n &[data-ring='custom']::after,\n &[data-ring='completed']::after,\n &[data-ring='error']::after {\n border-width: 3px;\n }\n\n ${props => {\n const gray100 = props.theme.getColor('gray-100');\n const gray300 = props.theme.getColor('gray-300');\n const gray700 = props.theme.getColor('gray-700');\n const emerald = props.theme.getColor('emerald-500');\n const red500 = props.theme.getColor('red-500');\n const red600 = props.theme.getColor('red-600');\n return css`\n &[data-ring='idle']::after {\n border-color: ${gray300};\n }\n &[data-ring='soft']::after {\n border-color: ${rgba(gray700, 0.5)};\n }\n &[data-ring='selected']::after {\n border-color: ${darkBorderColor};\n }\n &[data-ring='custom']::after {\n border-color: var(--ring-light);\n }\n &[data-ring='completed']::after {\n border-color: ${rgba(emerald, 0.7)};\n }\n &[data-ring='error']::after {\n border-color: ${rgba(red500, 0.7)};\n }\n\n @media (prefers-color-scheme: dark) {\n &[data-ring='idle']::after {\n border-color: ${darkBorderColor};\n }\n &[data-ring='soft']::after {\n border-color: ${rgba(gray100, 0.5)};\n }\n &[data-ring='selected']::after {\n border-color: ${gray100};\n }\n &[data-ring='custom']::after {\n border-color: var(--ring-dark);\n }\n &[data-ring='completed']::after {\n border-color: ${emerald};\n }\n &[data-ring='error']::after {\n border-color: ${red600};\n }\n }\n body.light-theme &[data-ring='idle']::after {\n border-color: ${gray300};\n }\n body.light-theme &[data-ring='soft']::after {\n border-color: ${rgba(gray700, 0.5)};\n }\n body.light-theme &[data-ring='selected']::after {\n border-color: ${darkBorderColor};\n }\n body.light-theme &[data-ring='custom']::after {\n border-color: var(--ring-light);\n }\n body.light-theme &[data-ring='completed']::after {\n border-color: ${rgba(emerald, 0.7)};\n }\n body.light-theme &[data-ring='error']::after {\n border-color: ${rgba(red500, 0.7)};\n }\n body.dark-theme &[data-ring='idle']::after {\n border-color: ${darkBorderColor};\n }\n body.dark-theme &[data-ring='soft']::after {\n border-color: ${rgba(gray100, 0.5)};\n }\n body.dark-theme &[data-ring='selected']::after {\n border-color: ${gray100};\n }\n body.dark-theme &[data-ring='custom']::after {\n border-color: var(--ring-dark);\n }\n body.dark-theme &[data-ring='completed']::after {\n border-color: ${emerald};\n }\n body.dark-theme &[data-ring='error']::after {\n border-color: ${red600};\n }\n `;\n }};\n`;\n\nexport const ThumbnailSection = styled.div.attrs(applyDefaultTheme)`\n position: relative;\n overflow: hidden;\n transition: background 220ms;\n ${props => props.theme.themeProp('background', darkBgColor, props.theme.getColor('gray-50'))}\n ${AssetGalleryGridCard}:hover & {\n ${props => props.theme.themeProp('background', darkHoverBgColor, lightHoverBgColor, 1)}\n }\n`;\n\n// ── Top bar ──────────────────────────────────────────────────────────────────\n\nexport const HorizontalBar = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px;\n height: 40px;\n box-sizing: border-box;\n flex-shrink: 0;\n position: relative;\n z-index: 2;\n`;\n\nexport const HorizontalBarLeft = styled.div`\n display: flex;\n align-items: center;\n`;\n\nexport const HorizontalBarRight = styled.div`\n display: flex;\n align-items: center;\n`;\n\nexport const StatusIconCircle = styled.span.attrs(applyDefaultTheme)`\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n pointer-events: none;\n svg {\n width: 100%;\n height: 100%;\n }\n`;\n\n// ── Thumbnail ─────────────────────────────────────────────────────────────────\n\nexport const ThumbnailRow = styled.div`\n position: relative;\n display: flex;\n width: 100%;\n`;\n\nexport const ThumbnailSpacer = styled.div`\n flex: 1;\n`;\n\nexport const ThumbnailWrapper = styled.div`\n width: max(66%, 268px);\n flex-shrink: 0;\n`;\n\nexport const ThumbnailBox = styled.div.attrs(applyDefaultTheme)`\n position: relative;\n height: 168px;\n\n flex-shrink: 0;\n overflow: hidden;\n\n img,\n video {\n width: 100%;\n height: 100%;\n object-fit: contain;\n display: block;\n }\n\n .audio {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n width: 35%;\n ${props =>\n props.theme.themeProp(\n 'color',\n props.theme.getColor('gray-400'),\n props.theme.getColor('gray-400')\n )}\n }\n }\n`;\n\nexport const ThumbnailSelectedOverlay = styled.div.attrs(applyDefaultTheme)`\n position: absolute;\n inset: 0;\n pointer-events: none;\n opacity: ${props => (props.selected ? 0.6 : 0)};\n background-color: #accef7;\n transition: opacity 220ms;\n z-index: 1;\n`;\n\nexport const ThumbnailActions = styled.div`\n flex: 1;\n`;\n\nexport const ActionsContainer = styled.div.attrs(applyDefaultTheme)`\n display: flex;\n align-items: end;\n flex-direction: column;\n gap: 8px;\n opacity: 0;\n transition: opacity 220ms;\n z-index: 1;\n position: absolute;\n right: 8px;\n ${AssetGalleryGridCard}:hover & {\n opacity: 1;\n }\n\n ${AssetGalleryGridCard}:focus-within & {\n opacity: 1;\n }\n`;\n\nexport const Action = styled.div`\n margin: 0;\n\n button {\n box-shadow: 0px 3px 6px #00000033;\n }\n svg {\n width: 16px;\n height: 16px;\n max-height: unset;\n max-width: unset;\n }\n`;\n\nexport const ConsumerOverlay = styled.div`\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 1;\n`;\n\n// ── Card body ─────────────────────────────────────────────────────────────────\n\nexport const CardBody = styled.div.attrs(applyDefaultTheme)`\n display: flex;\n flex-direction: column;\n flex: 1;\n padding: 16px 0px 0px 0px;\n`;\n\nexport const CardTitle = styled.span.attrs(applyDefaultTheme)`\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0px 16px;\n font: normal normal 500 14px/19px Roboto;\n letter-spacing: 0.28px;\n height: 19px;\n box-sizing: border-box;\n\n ${props =>\n props.theme.themeProp('color', props.theme.getColor('white'), props.theme.getColor('gray-700'))}\n`;\n\nexport const CardDescription = styled.span.attrs(applyDefaultTheme)`\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 6px 16px;\n font: normal normal normal 12px/1.286em Roboto;\n letter-spacing: 0.24px;\n height: 52px;\n box-sizing: border-box;\n overflow-wrap: break-word;\n word-break: break-word;\n\n ${props =>\n props.theme.themeProp('color', props.theme.getColor('white'), props.theme.getColor('gray-700'))}\n`;\n\nexport const InstructionsWrapper = styled.div.attrs(applyDefaultTheme)`\n min-height: 96px;\n margin-top: 16px;\n box-sizing: border-box;\n flex-shrink: 0;\n transition: background 220ms;\n opacity: 0;\n ${props =>\n props.$hasContent &&\n css`\n opacity: 1;\n border-top: 0.56px solid;\n border-bottom: 0.56px solid;\n ${props.theme.themeProp('border-color', darkBorderColor, props.theme.getColor('gray-300'))}\n `}\n\n ${props =>\n props.$hasContent &&\n css`\n opacity: 1;\n ${props.theme.themeProp('background', darkBgColor, props.theme.getColor('gray-50'))}\n ${AssetGalleryGridCard}:hover & {\n ${props.theme.themeProp('background', darkHoverBgColor, lightHoverBgColor, 1)}\n }\n `}\n`;\n\nexport const CardFooter = styled.div.attrs(applyDefaultTheme)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0px 16px;\n min-height: 52px;\n box-sizing: border-box;\n`;\n\nexport const CardFooterLeft = styled.div`\n display: flex;\n align-items: center;\n > * {\n margin-right: 4px;\n }\n`;\n\nexport const CardFooterRight = styled.div`\n display: flex;\n align-items: center;\n > * {\n margin-left: 4px;\n }\n`;\n\nexport const CardDivider = styled.div.attrs(applyDefaultTheme)`\n height: 1px;\n flex-shrink: 0;\n opacity: ${props => (props.invisible ? 0 : 1)};\n ${props => props.theme.themeProp('background', darkBorderColor, props.theme.getColor('gray-300'))}\n`;\n\nexport const CheckboxRow = styled.div`\n display: flex;\n padding: 0px 16px;\n align-items: center;\n height: 56px;\n box-sizing: border-box;\n flex-shrink: 0;\n`;\n\nexport const CheckboxButton = styled.div.attrs(applyDefaultTheme)`\n opacity: 1;\n flex-shrink: 0;\n cursor: pointer;\n transition: opacity 220ms;\n ${props => props.theme.themeProp('color', 'white', 'black')}\n > svg {\n width: 23px;\n height: 100%;\n }\n`;\n"],"names":["darkBorderColor","darkBgColor","darkHoverBgColor","lightHoverBgColor","AssetGalleryWrapper","styled","div","attrs","applyDefaultTheme","props","disabled","css","ringState","$softSelected","selected","$customSelectedBorder","completed","$hasError","AssetGalleryGridCard","style","theme","themeProp","getColor","extendedSelectMode","gray100","gray300","gray700","emerald","red500","red600","rgba","ThumbnailSection","HorizontalBar","HorizontalBarLeft","HorizontalBarRight","StatusIconCircle","span","ThumbnailRow","ThumbnailSpacer","ThumbnailWrapper","ThumbnailBox","ThumbnailSelectedOverlay","ThumbnailActions","ActionsContainer","Action","ConsumerOverlay","CardBody","CardTitle","CardDescription","InstructionsWrapper","$hasContent","CardFooter","CardFooterLeft","CardFooterRight","CardDivider","invisible","CheckboxRow"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ntbjs/react-components",
3
- "version": "2.0.12-rc.2",
3
+ "version": "2.0.12-rc.4",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },